5

我有一张这样的桌子:

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
)

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

4

3 回答 3

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
于 2013-11-02T16:36:59.630 回答
0

在这种情况下,您将需要另一个“审计”表,该表将为每个用户保留记录,以防用户删除用户详细信息将插入该表中的记录,并在用户上创建一个而不是删除触发器以检查审计表如果该用户详细信息存在于审计表中,则阻止其进一步删除如果审计表中不存在,则允许删除记录并在审计表中为该用户添加一行以防止进一步删除该用户。

于 2013-11-02T16:23:59.807 回答
-1

您应该将此类逻辑放在您的业务(逻辑)层中。
检查要删除的用户是否没有 UID=1

于 2013-11-02T16:24:35.587 回答