这是我在Customers表上的约束。
ALTER TABLE Customers
ADD CONSTRAINT CN_CustomerPhone
CHECK (Phone LIKE '([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]')
为什么这会失败?
INSERT INTO Customers
(CustomerName, Address, City, State, Zip, Phone)
VALUES
('Some Name','An Address', 'City goes here', 'WI', 12345, '(800) 555-1212')
出现此错误消息。
Msg 547,Level 16,State 0,Line 1 The INSERT语句与 检查约束“CN_CustomerPhoneNo”。 冲突发生在数据库中 “会计”,表“dbo.Customers”, 列'电话'。声明一直如此 终止。
我确信我错过了一些非常简单的东西,但我找不到它。
我已经尝试将约束简化为'Phone LIKE'[0-9]''并插入一个数字,但它仍然失败。 WTF?
答案 0 :(得分:5)
检查“电话”字段的长度 是15个或更多字符吗?
在这里使用带有临时表的代码
create table #temp
(phone varchar(15))
ALTER TABLE #temp
ADD CONSTRAINT CN_CustomerPhone
CHECK (Phone LIKE '([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]')
INSERT INTO #temp
(Phone)
VALUES
('(800) 555-1212')
select * from #temp
drop table #temp
答案 1 :(得分:1)
我是个白痴,这个领域被宣布为nchar,我没有考虑到填充空间。