-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 未満であることを確認することであると推測していますvarchar(50)。a に変更しvarchar(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 に答える