SqlServer 约束:(字段可空,非重复)

--建表
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 约束测试

 

posted @ 2020-05-22 14:49  玫瑰ζั͡ޓއއ祈祷  阅读(265)  评论(0)    收藏  举报