首页 > 解决方案 > 如何使用 SQL 创建欺诈检测?

问题描述

我有一个场景: 在此处输入图像描述

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

标签: mysqlsqlfraud-prevention

解决方案


老实说问题很抽象,所以需要做一些假设如下,

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

所以回答你的问题,

  1. AfterUpdate您的table.
  2. 在该触发器Fetch和行中,那些具有OR OR ORUpdate重复值的行。MobileNo DeviceId EmailId 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触发器,它将验证和限制创建欺诈者帐户。


推荐阅读