2010-11-21 82 views
0

我創建了一個強制檢查約束的SQL表,但現在當我嘗試插入數據時,我收到一條錯誤消息。將Char值插入到SQL表中

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語句

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

錯誤消息

INSERT語句衝突與CHECK約束 「BranchTelTelNo」。衝突發生在數據庫「StudentDetails」,表「dbo.BranchTel」,列'TelNo'。 該聲明已被終止。 插入語句 插入BranchTel值('BG-205','94-011-2571963') 錯誤消息 字符串或二進制數據將被截斷。 該聲明已被終止。

請幫我

回答

2

你的檢查約束爲14個字符長(你需要統計-爲好),而本場大小爲12

此外,940112571963不符合你已經在你的檢查約束定義的模式xx-xxx-xxxxxxx

您需要到外地大小更改爲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 2010-11-21 12:15:33