2010-11-21 12 views
0

SQLテーブルに強制的なチェック制約を作成しましたが、データを挿入しようとするとエラーメッセージが表示されます。SQLテーブルにChar値を挿入

create table BranchTel 
(
    BrRegNo varchar(10) REFERENCES Branch(BrRegNo), 
    TelNo char(12) 
    PRIMARY KEY(BrRegNo) 
) 
ALTER TABLE BranchTel Add Constraint BranchTelTelNo 
Check(TelNo LIKE '[0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9]') 

命令挿入

insert into BranchTel values('BG-205','940112571963') 

エラーメッセージ

CHECK制約 "BranchTelTelNo" と競合INSERT文。競合はデータベース "StudentDetails"、テーブル "dbo.BranchTel"、列 'TelNo'で発生しました。 ステートメントが終了しました。 文を挿入 BranchTelの値に挿入する( 'BG-205'、 '94-011-2571963') エラーメッセージ 文字列またはバイナリデータが切り捨てられます。 ステートメントが終了しました。

は私が

答えて

2

フィールドのサイズは12

また、940112571963はあなたのチェック制約で定義されているパターンxx-xxx-xxxxxxxに準拠していないですしながら、あなたのチェック制約は、(あなたにも-をカウントする必要がある)14文字の長さ。

あなたは14とするときにダッシュが正しい場所にあることを確認して挿入するフィールドのサイズを変更する必要があります。

insert into BranchTel values('BG-205','94-011-2571963') 
0
Insert statement insert into BranchTel values('BG-205','94-011-2571963') Error message String or binary data would be truncated. The statement has been terminated. 

ここで値94-011-2571963長さは明らかにチェック制約に違反する12以上である助けてください。

+0

それは数えるん - にも。私も10桁の数字を挿入しようとしましたが、それでもまだ挿入されません。ステートメントに - を入れるか、数字だけを書いてください – Yoosuf

関連する問題