create table employee
(
empID int check(empID>0),
Fname varchar(50) check(Fname<7),
Lname varchar(50),
Salary int check (salary>0),
Joining_Date date,
DOB date,
) ;
insert into employee values (5,'Ali','Murtaza', 30000, '2012-01-12','1984-01-20')
此表给出了上述错误.. 在哪里,我想检查Fname不要超过7..suggest ans please
答案 0 :(得分:3)
您的检查约束正在尝试查看字符串'Ali'是否小于7。这没有意义。引擎正在尝试将ali转换为无法执行的int。
我猜你的意图是检查以确保fname字符长度小于7.如果是这样,为什么要使用varchar(50)
?将其更改为varchar(7)
并放弃检查。
fname varchar(7),
如果你真的坚持在检查中这样做,那么你需要这样做:
fname varchar(50) check(length(fname)<7), /* depending on sql flavor */
如果您尝试做其他事情,请问您的问题并不清楚。
此外,根据您的sql风格(tsql,plsql等),检查约束的形式可能有效,也可能无效。我建议指定您的问题所引用的sql风格。