我目前正致力于为我的数据库编写触发器,其中包含表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,如果这有帮助。谢谢!
答案 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然后执行删除。