没有完成触发器的业务逻辑

时间:2014-03-18 12:14:40

标签: sql oracle

我有这样的触发器(当向表取消时添加一些票证,然后在票证表中设置此票证免费)。但是如果这张票已经免费,那么没有必要取消它。要添加什么来做这样的逻辑(当我将免费票证添加到表取消然后它会导致错误)?

CREATE OR REPLACE TRIGGER CANCEL_TICKET
  AFTER INSERT ON CANCEL
  FOR EACH ROW
  BEGIN
    UPDATE TICKET
      SET TICKET.CLIENT_ID = NULL
    WHERE TICKET.TICKET_ID = :NEW.TICKET_ID;
  END;

1 个答案:

答案 0 :(得分:0)

如果我理解正确:

你可以使用这样的IF语句:

IF (SELECT TICKET.CLIENT_ID FROM TICKET
    WHERE TICKET.TICKET_ID = :NEW_TICKET_ID) IS NOT NULL THEN

    UPDATE TICKET
      SET TICKET.CLIENT_ID = NULL
    WHERE TICKET.TICKET_ID = :NEW.TICKET_ID;
END IF;