SQL - 从触发器设置默认值

时间:2014-11-18 03:32:31

标签: sql-server triggers

我目前正致力于为我的数据库编写触发器,其中包含表employee和列dno。在编写触发器之前,我指定dno的默认值为1,如果要删除dno中的值,我想在触发器中强制执行默认值。 / p>

这是我到目前为止所拥有的。这对我来说似乎很简单,但我觉得我很少失踪。

create trigger empdeptfk_delete
on employee
after delete as
begin
update employee
set dno = 1
end

有没有办法可以写set default value代替set dno = 1?此外,我使用SQL Server 2012,如果这有帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

您必须处理更新触发器而不是删除触发器,因为您需要在dno字段更新时捕获。

以下是代码:

CREATE TRIGGER empdeptfk_update ON employee
    INSTEAD OF UPDATE
AS
    BEGIN
        IF UPDATE(dno)
            BEGIN

                DECLARE @DNO INT
                SELECT  @DNO = dno
                FROM    Inserted

                IF @DNO IS NULL
                    SET @DNO = 1

                UPDATE  employee
                SET     employee.dno = @DNO
                FROM    Inserted
                WHERE   Inserted.employeeID = employee.employeeID

            END
    END

答案 1 :(得分:0)

首先创建'删除前触发'然后执行更新dno = 1然后执行删除。