CREATE TRIGGER ???

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????????e-mail??????????????????????????????????????????????????????????????????

????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????????????????????????????????????????????TRIGGER??????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????

???????????????????????????????????????????????????SYS????????????????????????????????????

??????

CREATE TRIGGER ????????????
{ AFTER | NO CASCADE BEFORE } 
{ INSERT | DELETE | UPDATE [ OF ?????? [, ??????]* ] }
ON ??????
[ ????????? ]
[ FOR EACH { ROW | STATEMENT } ] [ MODE DB2SQL ] 
??????????????????SQL???

?????????????????????????????????

???????????????????????????????????????????????????????????????????????????????????????????????????
  • ??????????????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????(????????????????????????????????????????????????????????????????????????)
  • ?????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????(????????????????????????????????????????????????????????????????????????)

??????????????????????????????????????????????????????????????????????????????

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????(?????????????????????????????????????????????
  • INSERT
  • UPDATE
  • DELETE

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??????????????????????????????????????????????????????????????????:?????????

??????????????????????????????????????????????????????????????????????????????????????????SQL????????????????????????????????????????????????????????? ???????????????????????????SQL?????????????????????????????????????????????????????????(??????????????????????????????????????????????????????)?????????????????????????????????

Derby?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????SQL???????????????????????????????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????OLD/NEW AS ????????????????????????????????????????????????

???????????????????????????????????????????????????????????????????????????
REFERENCING OLD AS DELETEDROW
??????????????????SQL?????????????????????????????????????????????
DELETE FROM HotelAvailability WHERE hotel_id = DELETEDROW.hotel_id
???????????????OLD???NEW??????????????????????????????????????????????????????java.sql.ResultSet???????????????????????????
Note: ???????????????????????????????????????????????????????????????(???????????????????????????????????????????????????????????????) ???????????????????????????????????????????????????OLD???????????????????????????????????????????????????????????????????????????NEW?????????????????????????????????

??????????????????????????????????????????????????????SQL???????????????????????????????????????????????? ??????????????????????????????????????????????????????OLD_TABLE/NEW_TABLE AS ????????????????????????????????????????????????

????????????
REFERENCING OLD_TABLE AS DeletedHotels
???????????????????????????(DeletedHotels)?????????????????????SQL????????????????????????????????????
DELETE FROM HotelAvailability WHERE hotel_id IN
    (SELECT hotel_id FROM DeletedHotels)
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????java.sql.ResultSet???????????????????????????
Note: ???????????????(???????????????????????????????????????????????????????????????)?????????????????????????????????????????? INSERT???????????????????????????OLD?????????????????????????????????DELETE???????????????????????????NEW?????????????????????????????????

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

?????????????????????????????????

????????????????????????????????????????????????????????????????????? CREATE TRIGGER??????FOR EACH??????????????????????????????????????????????????????????????????????????????????????????????????????????????????
  • ???????????????

    ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

  • ???????????????

    ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

Note: ?????????????????????????????????????????????????????????(????????????UPDATE T SET C = C???????????????????????????????????????)???????????????????????????????????????????????????????????????????????????????????????????????????????????????

??????????????????SQL???

???????????????????????????????????????????????????????????????????????????SQL?????????????????????(????????????????????????????????????????????????????????????) ??????????????????SQL??????????????????????????????????????????
  • ???????????????(?)?????????????????????????????????
  • ???????????????????????????????????????????????????????????????????????????????????????????????????
  • ???????????????????????????????????????????????????????????????????????????????????????????????????
  • ??????????????????????????????????????????????????????????????????????????????????????????????????????
  • ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
  • ????????????????????????????????????INSERT/UPDATE/DELETE????????????????????????????????????
  • ???????????????????????????????????????????????????????????????????????????????????????????????????

??????????????????SQL?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??????????????????SQL??????????????????????????????Derby ???????????????????????? ???????????????????????????????????????

???????????????

??????????????????????????????????????????????????????????????????????????????Derby???????????????????????????????????????
  • ?????????No Cascade Before???????????????????????????????????????????????????
  • ???????????????(???????????????????????????????????????)???????????????????????????
  • ?????????????????????????????????????????????????????????????????????
  • ?????????After?????????????????????????????????

???????????????????????????????????????????????????????????????(????????????????????????????????????????????????)???????????????????????????????????????????????????????????????????????????????????????????????????????????????

-- ???????????????

CREATE TRIGGER t1 NO CASCADE BEFORE UPDATE ON x
  FOR EACH ROW MODE DB2SQL
  values app.notifyEmail('Jerry', 'Table x is about to be updated'); 

CREATE TRIGGER FLIGHTSDELETE
  AFTER DELETE ON FLIGHTS
  REFERENCING OLD_TABLE AS DELETEDFLIGHTS
  FOR EACH STATEMENT 
  DELETE FROM FLIGHTAVAILABILITY WHERE FLIGHT_ID IN
  (SELECT FLIGHT_ID FROM DELETEDFLIGHTS);

CREATE TRIGGER FLIGHTSDELETE3
  AFTER DELETE ON FLIGHTS
  REFERENCING OLD AS OLD
  FOR EACH ROW 
  DELETE FROM FLIGHTAVAILABILITY WHERE FLIGHT_ID = OLD.FLIGHT_ID;
Note: Derby ???????????????????????? ????????????????????????????????????????????????????????????

??????????????????

???????????????????????????16???????????????

??????????????????

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Related reference
CREATE FUNCTION ???
CREATE INDEX ???
CREATE PROCEDURE ???
CREATE SCHEMA ???
CREATE SYNONYM ???
CREATE TABLE ???
CREATE VIEW ???