sql约束不允许两个标志为false
我有下表:
CREATE TABLE test(
flag_1 boolean not null default true,
flag_2 boolean not null default false
);
我想要一个不允许两个标志的约束。其中至少有一个需要是真实的。
示例:
INSERT INTO test VALUES(true, true); // Should work
INSERT INTO test VALUES(true, false); // Should work
INSERT INTO test VALUES(false, true); // Should work
INSERT INTO test VALUES(false, false); // Should fail
我想到了以下内容:
ALTER TABLE test
ADD CONSTRAINT allow_only_one_false
CHECK
(
( CASE WHEN flag_1 is false and flag_2 is false then 0 ELSE 1 END
) = 1
);
它确实有效,但不确定是否有一种更简单的方法来实现这一目标。
数据库小提琴:
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你可以做
You can do
我认为您应该在更新后使用触发器来确保您的两个字段不正确。
[使用触发器] [1] https://www.educba.com/sql-after-update-trigger/
I think you should use the trigger after the update to make sure both of your fields are incorrect.
[Use Trigger][1]https://www.educba.com/sql-after-update-trigger/