2010-11-21 84 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