> UniqueID INT UNIQUE,
Number INT CHECK (Number >= 10 AND Number INSERT INTO TestTable(ID,UniqueID,Number,NonNULL) VALUES(2,1,1,10);
把 UniqueID 从 1 改为修改为 2 ,继续插入,提示 NSERT 语句与 CHECK 约束 "CK__TestTable__Numbe__03317E3D" 冲突
INSERT INTO TestTable(ID,UniqueID,Number,NonNULL) VALUES(2,2,1,10);
把 Number 从 1 改成 11 ,插入 OK
INSERT INTO TestTable(ID,UniqueID,Number,NonNULL) VALUES(2,2,11,10);
注意以上只有执行成功后,才会执行触发器;而如果某个环节失败,整个事务回滚。
再次修改触发器,注意本处是把 Number 设置为 1 ,来判断触发器执行后,是否仍需要进行 Check 和约束判断
ALTER TRIGGER [TRI_TestTable] ON TestTable
AFTER INSERT,UPDATE
AS
DECLARE @ID INT,@UniqueID INT,@Number INT,@NonNULL INT
SELECT @ID=ID,@UniqueID=UniqueID,@Number=Number,@NonNULL=NonNULL
FROM INSERTED
SET @Number=1
SET @NonNULL=NULL
INSERT INTO LogTable VALUES('TestTable',GETDATE());