2017-10-16 69 views
0

由于SQLite不支持TRUE和FALSE,因此我有一个存储0和1的布尔关键字。对于所讨论的布尔列,我想要检查列中包含的1的个数,并限制表的总数。根据列的值限制表可以包含的行数 - SQLite

例如,该表可以有列:name,isAdult。如果表中有超过5个成年人,系统将不允许用户在isAdult = 1的情况下添加第6个条目。对于该表可以包含多少行没有限制,因为对于数量没有限制其中isAdult = 0的条目。

回答

1

您可以使用触发器来防止插入第六项:(您可能需要更新一个类似扳机)

CREATE TRIGGER five_adults 
BEFORE INSERT ON MyTable 
WHEN NEW.isAdult 
AND (SELECT COUNT(*) 
     FROM MyTable 
     WHERE isAdult 
    ) >= 5 
BEGIN 
    SELECT RAISE(FAIL, "only five adults allowed"); 
END; 

+0

没有测试出来呢,但看起来它应该做的诀窍。谢谢! – modegv

相关问题