如何使用 SQL 创建欺诈检测?

how to create fraud detection with SQL?

我有一个场景:

*注意:我不想更新B和D成为骗子。它们只是与欺诈用户共享的属性。因此,如果我决定将用户 A 更改为不是欺诈者。与其他用户没有变化。

老实说问题很抽象,所以需要做出如下几个假设,

  1. 假设数据库服务器为MySQL
  2. 考虑到这一点,欺诈者帐户的数据已经存在于 table。
  3. 字段重复MobileNo OR DeviceId OR EmailId OR IPAddress决定fradster

所以为了回答你的问题,

  1. 在您的 table 上创建一个 AfterUpdate 触发器。
  2. 在那个触发器 FetchUpdate 行中,那些具有重复值的 MobileNo DeviceId OR EmailId OR IPAddress.

仅当 NEW.IsFraudsterStatus = 1

时才触发更新查询
if (NEW.IsFraudsterStatus = 1) THEN
     UPDATE tableUser
     SET IsFraudsterStatus = 1
     WHERE 
          (tableUser.MobileNo = NEW.MobileNo
          OR
          tableUser.DeviceId = NEW.DeviceId
          OR
          tableUser.EmailId = NEW.EmailId
          OR
          tableUser.IPAddress = NEW.IPAddress)
         AND
          IsFraudsterStatus = 0; 
ELSE
     UPDATE tableUser
     SET IsFraudsterStatus = 0
     WHERE 
          (tableUser.MobileNo = NEW.MobileNo
          OR
          tableUser.DeviceId = NEW.DeviceId
          OR
          tableUser.EmailId = NEW.EmailId
          OR
          tableUser.IPAddress = NEW.IPAddress)
         AND
          IsFraudsterStatus = 1;
END IF;

在上面的查询中,您可以根据需要添加 conditions,请通过 OR 标记它们,以便如果任何条件为真,则帐户是欺诈者。

  1. 一旦触发上述查询,它将重复更新所有此类帐户,如 Fraudster。并且请注意 ANDed 条件,它将防止无休止的递归触发。

除此之外,我会推荐一个 BeforeInsert 触发器,它将验证和限制欺诈者帐户的创建。