一个字段,在它收到内容之前可以为空?

时间:2010-02-11 16:35:08

标签: sql-server-2005

如果表中有一个字段(外键)可以接受null,直到其中有内容为止,那么该字段将拒绝null值。

你会怎么做?

3 个答案:

答案 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并且新值不是时才更新列。