检查两个表的SQL触发器

时间:2014-02-16 22:36:29

标签: sql sql-server triggers

我已经获得了一个创建多个触发器的项目。这是系列中的最后一个。 “创建一个触发器,确保EMPLOYEE表中的作业代码是作业表中的有效作业代码。”清楚地引用两个表。

我可以使用以下简单代码来完成吗?可以同时使用两个表来触发表吗?

CREATE TRIGGER valJobCode
ON EMPLOYEE
AFTER INSERT,UPDATE,DELETE
AS 
    BEGIN
    ALTER TABLE EMPLOYEE
    ADD CHECK(SELECT EMPLOYEE.JOB_CODE, JOB.JOB_CODE
              FROM EMPLOYEE INNER JOIN JOB ON 
              EMPLOYEE.JOB_CODE=JOB.JOB_CODE
              WHERE (EMPLOYEE.JOB_CODE >=500 AND EMPLOYEE.JOB_CODE <= 510)
END

1 个答案:

答案 0 :(得分:0)

更改表以在触发器中添加检查没有意义。这意味着在每个Insert,Update或Delete事务中,您将尝试更改添加相同检查的表。

如果必须使用触发器,则删除ALTER TABLEADD CHECK指令,如果SELECT条件为真,则返回ROLLBACK TRANSACTION。虽然您不需要触发器来完成employee.job_code列上的FOREIGN KEY约束。