说我有这个我在SQLiteStudio中构建的表
|ID|VAL|STRATEGY|
|1 |A |LOWEST |
|2 |A |LOWEST |
|3 |B |PRIORITY|
|4 |B |PRIORITY|
|5 |C |LOWEST |
战略的唯一有效值是LOWEST
和PRIORITY
,因此我为此设置了此检查条件。
STRATEGY IN ('LOWEST','PRIORITY')
如果我将ID为1的记录更新为PRIORITY
,我希望它失败,因为我希望VALUE A的两个记录都是PRIORITY
。所有具有共同VALUE
的记录都应位于同一STRATEGY
。
UPDATE STRATEGY_MAP SET STRATEGY = 'PRIORITY' WHERE ID = 1 /* This should fail*/
因此,如果我要更新两个记录,那么一切都会很好地验证。
UPDATE STRATEGY_MAP SET STRATEGY = 'PRIORITY' WHERE ID in (1,2)
OR ...
UPDATE STRATEGY_MAP SET STRATEGY = 'PRIORITY' WHERE VAL = 'A'
有没有一种简单的方法可以在SQLite中添加我之前的验证?我知道它可能会被MySQL中的触发器拉掉。但我希望我的SQLite原型数据库能够强制执行此规则。