-3
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..建议请

4

1 回答 1

3

您的检查约束试图查看字符串 'Ali' 是否小于 7。那没有意义。引擎正在尝试将 ali 转换为它无法执行的 int。

我猜您的意图是检查以确保 fname 字符长度小于 7。如果是这种情况,为什么要使用 a varchar(50)?将其更改为 avarchar(7)并放弃检查。

fname varchar(7),

如果你真的坚持做检查,那么你需要这样做:

fname varchar(50) check(length(fname)<7),  /* depending on sql flavor */

如果您尝试做其他事情,您的问题并不清楚。

此外,根据您的 sql 风格(tsql、plsql 等),您的检查约束的形式可能有效也可能无效,我建议您指定您的问题所引用的 sql 风格。

于 2012-10-06T19:10:04.813 回答