检查约束中的SQL子查询

问题描述 投票:37回答:1

我可以在Check约束中创建SQL子查询吗?

我有一个post表,列id, owner 我有另一张桌子action与列user_id, post_iduser与列id

post_id -> post.iduser_id -> user.idpost.owner -> user.id

现在我想在表post(post_id).id != user_id上约束action

怎么可能?

postgresql foreign-key-relationship plpgsql check-constraints
1个回答
61
投票

不支持超出CHECK约束中的当前行。

http://www.postgresql.org/docs/9.1/interactive/sql-createtable.html说:

指定为列约束的检查约束应仅引用该列的值,而出现在表约束中的表达式可引用多个列。

目前,CHECK表达式不能包含子查询,也不能引用当前行的列以外的变量。

这种限制是有充分理由的,但是如果你喜欢在交通繁忙的情况下骑单轮脚踏车时使用燃烧的火炬,你可以使用功能来破坏限制。在这种情况下,这种情况不会让你感到难过;你可以更安全地在触发代码中强制执行不变量。

http://www.postgresql.org/docs/9.1/interactive/triggers.html

© www.soinside.com 2019 - 2024. All rights reserved.