老实说问题很抽象,所以需要做一些假设如下,
- 假设数据库服务器为 MySQL
- 考虑到这一点,欺诈者账户的数据已经存在于表中。
- 字段的重复
MobileNo OR DeviceId OR EmailId OR IPAddress
决定了fradster。
所以回答你的问题,
- 在
AfterUpdate
您的table
.
- 在该触发器
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
如果任何条件为真,则该帐户是欺诈者。
- 一旦上述查询被触发,它将重复更新所有此类帐户,例如Fraudster。请注意
AND
ed 条件,它将防止无休止的递归触发。
除此之外,我会推荐一个BeforeInsert
触发器,它将验证和限制创建欺诈者帐户。