T-SQL如何防止删除表中的第一行

Mag*_*gie 5 t-sql database sql-server

我有一张这样的桌子:

CREATE TABLE Users
(

    idUser int IDENTITY(1,1) PRIMARY KEY,
firstName varchar(40) NOT NULL,
secondName varchar(40),
lastName varchar(70) NOT NULL,
position varchar(80),
section varchar(80) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

某人只需要删除一个用户。如何防止第一行被删除?我无法重新插入它,第一行必须具有idUser = 1。

Wag*_*rdi 4

您可以在表 [Users] 上创建一个触发器,用于监视何时删除该表中的寄存器。所以你检查删除是否是userId:1然后你不删除它,否则..你删除它,代码如下:

CREATE TRIGGER sampleTrigger
    ON [Users]
    INSTEAD OF DELETE
AS
    IF EXISTS(SELECT * FROM deleted WHERE idUser IN (1))
    BEGIN
        RAISERROR ('Is not allowed to delete idUser: 1',16, 1)  
    END
    ELSE
    BEGIN
        DELETE [Users] WHERE idUser IN (SELECT idUser FROM deleted)
    END
GO
Run Code Online (Sandbox Code Playgroud)