只是尝试在SQL Server 2012中创建一个简单的函数用作检查约束。不能错过这个错误。谢谢你的帮助!
我收到的错误:
消息547,级别16,状态0,行1 ALTER TABLE语句 与CHECK约束“CheckBatchQuantity”冲突。该 数据库“Ians23_SnackManufacturer”表中发生冲突 “dbo.Batch”,列'BatchQuantity'。
代码:
CREATE FUNCTION udfBatchNumber2
(@BatchQuantity int)
RETURNS int
AS
BEGIN
DECLARE @Return int
IF @BatchQuantity >10
SET @Return = 0
ELSE
SET @Return = 1
RETURN @Return
END
ALTER TABLE Batch
ADD CONSTRAINT CheckBatchQuantity
check ((dbo.[udfBatchNumber](BatchQuantity)) <= 0)
答案 0 :(得分:0)
错误是由于Batch
表中的BatchQuantity
大于而不是zero
的现有记录。
首先更新/删除BatchQuantity > 0
然后创建检查约束
update Batch
set BatchQuantity = NULL
Where BatchQuantity > 0
ALTER TABLE Batch
ADD CONSTRAINT CheckBatchQuantity
check ((dbo.[udfBatchNumber](BatchQuantity)) <= 0)
或者您可以使用NOCHECK
创建约束,但不会检查现有数据
ALTER TABLE Batch WITH NOCHECK
ADD CONSTRAINT CheckBatchQuantity
check ((dbo.[udfBatchNumber](BatchQuantity)) <= 0)