检查约束内的子查询
Posted
技术标签:
【中文标题】检查约束内的子查询【英文标题】:sub-queries inside check constraint 【发布时间】:2012-05-17 02:06:40 【问题描述】:如果我有一个包含 2 个字段(姓名和地址)的人员表。
create table PERSON (
NAME VARCHAR2(50),
ADDRESS VARCHAR2(100)
);
我如何确保所有地址相同的人都有不同的名字。
我尝试使用CHECK
约束,网上有一些示例在create table 语句中使用子查询,但出现SQL 错误:
ORA-02251:此处不允许子查询
任何帮助将不胜感激。 谢谢
【问题讨论】:
姓名、地址的唯一索引应该可以。因此,您不能两次插入相同的名称/地址组合。另一方面,这意味着同一地址的所有名称都必须不同。 【参考方案1】:您不能将行保留在检查约束中。为此,您可以使用触发器。
【讨论】:
我认为唯一约束(根据@a_horse_with_no_name 的评论)比一堆触发器更干净。以上是关于检查约束内的子查询的主要内容,如果未能解决你的问题,请参考以下文章