嗨我目前正在制定一個SQL觸發器應該說「當插入一行到CUSTOMER_ALIAS表,檢查是否任何該行中的三個地址列含有存在於US_STATES表中的值(其由一列的 - 「COUNTRY_NAME」),如果客戶的地址是美國狀態然後設置INDICIA_STATE當前插入「真」的那一行的列表使用不同的表觸發器檢查條件,然後更改取決於結果插入的行的值
CREATE TRIGGER ADDRESS_T BEFORE INSERT ON MYDB.CUSTOMER_ALIAS
REFERENCING NEW ROW AS NEW_ROW
WHEN
EXISTS(SELECT * FROM MYDB.US_STATES WHERE US_STATES.COUNTRY_NAME = NEW_ROW.ADDRESS_1_COUNTRY OR US_STATES.COUNTRY_NAME = NEW_ROW.ADDRESS_2_COUNTRY OR US_STATES.COUNTRY_NAME = NEW_ROW.ADDRESS_3_COUNTRY)
THEN SET NEW_ROW.INDICIA_STATE= 'true'
;
我得到這個錯誤
Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=CREATE TRIGGER ADDRESS_T BEFORE INSERT ON D;BEGIN-OF-STATEMENT;<space>, DRIVER=4.16.53
SQLState: 42601
ErrorCode: -104
根據IBM's error code list這似乎是一個語法錯誤,但我不明白的地方它的來源。這個觸發器應該如何看待?
刪除了mysql標籤,因爲問題與DB2有關。 – 2014-08-29 02:21:11