SQL触发器使用常量和条件分割

时间:2012-08-16 19:16:50

标签: sql triggers relational-database rdbms

我正在这个问题中在黑暗中拍摄,因为我的数据库知识很少,但RDBMS触发器是否可以用常量AND条件分割,比如说,在同一个触发器中有多个'WHEN'语句?我被要求研究这个话题,坦率地说,甚至不知道从哪里开始。我没有任何“真正的”代码可以发布,只是寻找具有更多数据库经验的用户的一些理论见解。提前感谢您的见解。

示例代码:

 CREATE TRIGGER REORDER
 AFTER UPDATE OF ON_HAND, MAX_STOCKED ON PARTS
 REFERENCING NEW AS N
 FOR EACH ROW
 WHEN (N.ON_HAND < 0.10 * N.MAX_STOCKED)
 BEGIN ATOMIC
 WHEN (N.ON_BCK_ORDR < N.CUST_ORDERED)
 VALUES(ISSUE_SHIP_REQUEST(N.MAX_STOCKED - N.ON_HAND, N.PARTNO));
 END

2 个答案:

答案 0 :(得分:0)

不确定你在问什么。我想你需要知道create trigger语法。尝试谷歌为oracle,MSSQL,MySQL,PostgreSQL数据库的“创建触发器”语法。

答案 1 :(得分:0)

在CASE语句中使用时,触发器可以包含多个“WHEN”谓词,如下所示:

CREATE TRIGGER trg
BEFORE UPDATE OF dept_salary
ON employee_wages

BEGIN
   CASE
      WHEN INSERTING THEN
         DBMS_OUTPUT.PUT_LINE('Inserting');
      WHEN UPDATING ('salary') THEN
         DBMS_OUTPUT.PUT_LINE('UPDATING SALARY');
      WHEN DELETING THEN
         DBMS_OUTPUT.PUT_LINE('DELETING');
   ENDCASE
END