--建表
CREATE TABLE 约束测试
(
CS1 NVARCHAR(50)
)
--建函数
CREATE FUNCTION [DBO].[FN_YSCS_CS1]
(
@VAL NVARCHAR(MAX)
)
RETURNS INT
AS
BEGIN
DECLARE @RET INT SET @RET = 0
IF(@VAL IS NULL OR @VAL = '')
BEGIN
SET @RET = 1
END
ELSE
BEGIN
DECLARE @CT INT SET @CT = 0
SELECT @CT = COUNT(*) -1 FROM 约束测试 WHERE CS1 = @VAL
IF(@CT = 0 )
BEGIN
SET @RET = 1
END
ELSE
BEGIN
SET @RET = 0
END
END
RETURN @RET
END
GO
--绑定约束
ALTER TABLE 约束测试
ADD CONSTRAINT CK_FN_YSCS_CS1 CHECK (DBO.FN_YSCS_CS1(CS1) = 1)
--取消约束
--ALTER TABLE 约束测试 DROP CONSTRAINT CK_FN_YSCS_CS1
--测试数据
INSERT INTO 约束测试
SELECT ''
INSERT INTO 约束测试
SELECT ''
INSERT INTO 约束测试
SELECT NULL
INSERT INTO 约束测试
SELECT NULL
INSERT INTO 约束测试
SELECT '1'
INSERT INTO 约束测试
SELECT '1'
--最终结果
SELECT * FROM 约束测试