Sql check语句查询错误
Sql Query error in check statement
我必须为 Dept 定义一个 table 约束,以确保所有经理的年龄都 > 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 ')'.
I'm using Microsoft sql management studio 2014.
告诉我哪里做错了。
谢谢!
您可以创建用户定义函数。看看看看:Can a Check constraint relate to another table? or Sub queries in check constraint
您可以在没有 UDF 的情况下执行此操作。您可以使用外键约束和计算列。
create table emp (
eid int primary key,
ename varchar(20),
age int,
salary real CHECK (salary >= 10000),
manager_eligible as (case when age > 30 then 1 else 0 end),
unique (manager_eligible, eid)
);
create table dept(
did int primary key,
buget real,
managerid int,
manager_eligible as (1),
foreign key (manager_eligible, managerid) references emp(manager_eligible, eid)
);
我应该补充一点,UDF 通常会减慢速度。因此,能够使用外键执行此操作也应该使插入和更新更快。
我必须为 Dept 定义一个 table 约束,以确保所有经理的年龄都 > 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 ')'.
I'm using Microsoft sql management studio 2014.
告诉我哪里做错了。 谢谢!
您可以创建用户定义函数。看看看看:Can a Check constraint relate to another table? or Sub queries in check constraint
您可以在没有 UDF 的情况下执行此操作。您可以使用外键约束和计算列。
create table emp (
eid int primary key,
ename varchar(20),
age int,
salary real CHECK (salary >= 10000),
manager_eligible as (case when age > 30 then 1 else 0 end),
unique (manager_eligible, eid)
);
create table dept(
did int primary key,
buget real,
managerid int,
manager_eligible as (1),
foreign key (manager_eligible, managerid) references emp(manager_eligible, eid)
);
我应该补充一点,UDF 通常会减慢速度。因此,能够使用外键执行此操作也应该使插入和更新更快。