我可以在 Check 约束中进行 SQL 子查询吗?
I've a post
带列的表id, owner
我还有另一张桌子action
有柱子user_id, post_id
Table user
有柱子id
post_id -> post.id
and user_id -> user.id
also post.owner -> user.id
现在我想约束post(post_id).id != user_id
桌上action
这怎么可能?
不支持在 CHECK 约束中查看超出当前行的内容。
http://www.postgresql.org/docs/9.1/interactive/sql-createtable.html http://www.postgresql.org/docs/9.1/interactive/sql-createtable.html says:
指定为列约束的检查约束应引用
仅该列的值,而表达式出现在表中
约束可以引用多个列。
目前,CHECK 表达式不能包含子查询,也不能引用
除当前行的列之外的变量。
这个限制有充分的理由,但如果你喜欢在交通拥堵的情况下骑着独轮车时玩弄燃烧的火把,你可以使用函数来打破这个限制。这将在什么情况下not回来咬你是难得的;相反,在触发代码中强制执行不变量会更安全。
http://www.postgresql.org/docs/9.1/interactive/triggers.html http://www.postgresql.org/docs/9.1/interactive/triggers.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)