【发布时间】:2017-03-23 13:23:05
【问题描述】:
我必须在 Dept 上定义一个表约束,以确保所有经理的年龄 > 30。 我是初学者,所以我不想使用用户定义的函数。 在这里,我想要一个简单的解决方案。这可以应用我的 check in create table 语句。 我想使用检查语句或断言语句。
create table emp(eid int primary key,ename varchar(20),age int,salary real CHECK (salary >= 10000));
create table dept(did int primary key, buget real,managerid int foreign key (managerid) references emp check ((select eid from emp where age >30)));
它给出以下错误我不知道为什么
Msg 156, Level 15, State 1, Line 54
Incorrect syntax near the keyword 'select'.
Msg 102, Level 15, State 1, Line 54
Incorrect syntax near ')'.
我正在使用 Microsoft sql management studio 2014。
告诉我哪里做错了。 谢谢!
【问题讨论】:
-
顺便说一句,您不应该将
age存储为固定值,因为您需要在每次年龄变化时更新它。改为存储出生日期,并让age成为计算列 -
您所描述的是业务规则。不是数据完整性规则。因此,最好在应用层而不是数据库层实现该规则。
标签: sql sql-server relation