我有一个场景:
用户a是(欺诈者)。
用户b不是(欺诈者)。但是,系统将不允许用户b执行任何操作。因为b和a使用相同的电话号码(与欺诈用户共享属性)。(1层)。
用户d不是(欺诈者)。但d与b使用相同的设备ID,b与欺诈用户共享属性。然后也阻止用户d。在这种情况下,有两层。d与b比较,b与a比较。在这个示例中,有3个用户。如果我有100个用户!查询将非常长,将有99层。
- 注意:我不想更新b和d成为欺诈者。它们只是欺诈用户的共享属性。所以如果我决定把用户a改成不是骗子。其他用户没有更改。
我有一个场景:
用户a是(欺诈者)。
用户b不是(欺诈者)。但是,系统将不允许用户b执行任何操作。因为b和a使用相同的电话号码(与欺诈用户共享属性)。(1层)。
用户d不是(欺诈者)。但d与b使用相同的设备ID,b与欺诈用户共享属性。然后也阻止用户d。在这种情况下,有两层。d与b比较,b与a比较。在这个示例中,有3个用户。如果我有100个用户!查询将非常长,将有99层。
1条答案
按热度按时间n7taea2i1#
老实说,这个问题是相当抽象的,所以需要做一些假设如下:,
假设数据库服务器为mysql
考虑到这一点,欺诈账户的数据已经出现在表中。
字段的重复
MobileNo OR DeviceId OR EmailId OR IPAddress
弗雷斯特决定。为了回答你的问题,
创建
AfterUpdate
触发你的table
.在那个触发器里
Fetch
以及Update
具有重复值的行MobileNo
或DeviceId
或EmailId
或IPAddress
.仅当,
NEW.IsFraudsterStatus = 1
,在上述查询中,您可以添加
conditions
如有需要,请注明OR
如果其中任何一个条件是真的,那么账户就是欺诈者。一旦上述查询被触发,它将作为欺诈者重复更新所有此类帐户。请注意
AND
它将防止无休止的递归触发。除此之外,我推荐一个
BeforeInsert
触发器,它将验证并限制欺诈者帐户的创建。