如果表中有一个字段(外键)可以接受null,直到其中有内容为止,那么该字段将拒绝null值。
你会怎么做?答案 0 :(得分:2)
根据MSDN,触发器对于“扩展表之间的引用完整性”非常有用。,这正是您要做的。因此,只需使用FOR UPDATE
触发器并在旧值不为null但新值为的情况下引发错误。
假设您有一个名为SomeId
的类型为int的可为空的列,并且您的表名为SomeTable
,则以下触发器将执行此任务:
CREATE TRIGGER CheckTrigger ON SomeTable
FOR UPDATE
AS
DECLARE @OldId int,
@NewId int
BEGIN
SELECT @OldId = SomeId FROM deleted
SELECT @NewId = SomeId FROM inserted
IF NOT @OldId IS NULL AND @NewId IS NULL
BEGIN
RAISERROR ('No!!!!', 10,1) WITH NOWAIT
ROLLBACK TRANSACTION
END
END;
答案 1 :(得分:1)
在这种情况下,触发器是你最好的选择
答案 2 :(得分:1)
嗯,我想到的第一件事就是创建一个触发器,只有当它为null并且新值不是时才更新列。