Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 在接收到某个内容之前可以为空的字段?_Sql Server 2005 - Fatal编程技术网

Sql server 2005 在接收到某个内容之前可以为空的字段?

Sql server 2005 在接收到某个内容之前可以为空的字段?,sql-server-2005,Sql Server 2005,如果表中有一个字段(外键),该字段可以接受null,直到其中有内容为止,因此在此之后该字段将拒绝null值 您将如何做到这一点?根据,触发器对于“扩展表之间的引用完整性”非常有用,而这正是您正试图做到的。因此,只需使用进行更新触发器,并在旧值不为null而新值为null时引发错误 假设您有一个名为SomeId的int类型的可空列,并且您的表名为SomeTable,则以下触发器将执行此操作: CREATE TRIGGER CheckTrigger ON SomeTable FOR UPDATE A

如果表中有一个字段(外键),该字段可以接受null,直到其中有内容为止,因此在此之后该字段将拒绝null值

您将如何做到这一点?

根据,触发器对于“扩展表之间的引用完整性”非常有用,而这正是您正试图做到的。因此,只需使用
进行更新
触发器,并在旧值不为null而新值为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;

在这种情况下,触发器是最好的选择。我想到的第一件事是创建一个触发器,它只在列为null而新值不为null时更新列