我可以在Check约束中创建SQL子查询吗?
我有一个post
表,列id, owner
我有另一张桌子action
与列user_id, post_id
表user
与列id
post_id -> post.id
和user_id -> user.id
也post.owner -> user.id
现在我想在表post(post_id).id != user_id
上约束action
怎么可能?
不支持超出CHECK约束中的当前行。
http://www.postgresql.org/docs/9.1/interactive/sql-createtable.html说:
指定为列约束的检查约束应仅引用该列的值,而出现在表约束中的表达式可引用多个列。
目前,CHECK表达式不能包含子查询,也不能引用当前行的列以外的变量。
这种限制是有充分理由的,但是如果你喜欢在交通繁忙的情况下骑单轮脚踏车时使用燃烧的火炬,你可以使用功能来破坏限制。在这种情况下,这种情况不会让你感到难过;你可以更安全地在触发代码中强制执行不变量。
http://www.postgresql.org/docs/9.1/interactive/triggers.html