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

时间:2013-11-02 16:19:59

标签: sql-server database tsql

我有一张这样的表:

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。

3 个答案:

答案 0 :(得分:2)

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

CREATE TRIGGER sampleTrigger
    ON [Users]
    INSTEAD OF DELETE
AS
    IF (SELECT idUser FROM deleted) = 1
    BEGIN
        RAISERROR ('Is not allowed to delete idUser: 1',1,1)    
    END
    ELSE
    BEGIN
        DELETE FROM [Users] WHERE idUser = (SELECT idUser FROM deleted)
    END
GO

答案 1 :(得分:0)

在这种情况下,您将需要另一个“审核”表,该表将保留每个用户的记录,以防用户删除将在该表中插入用户详细信息的记录,并在用户上创建替代删除触发器检查在Audit表中,如果该用户详细信息在Audit表中退出,则阻止它进一步删除如果在Audit表中不存在,则阻止Record Deletion并在此表中为该用户添加一行以防止进一步删除该用户。

答案 2 :(得分:-1)

您应该将这些逻辑放在您的业务(逻辑)层中 检查要删除的用户是否为UID = 1