Trigger
DB2 觸發器錯誤:在 SQLCODE=-104、SQLSTATE=42601、DRIVER=3.68.61 之後發現了意外的標記“OR INSERT”
執行以下查詢時出現錯誤。根據 DB2 文件,我們可以在同一個觸發器中同時包含更新和插入事件,但是當我嘗試這樣做時,我得到了一個錯誤。
CREATE TABLE NULL_LOOKUP ( ID INT NOT NULL, TABLE_NAME VARCHAR(100) NOT NULL ); CREATE TABLE PARENT ( PARENT_ID INT NOT NULL, PARENT_NAME VARCHAR(100) NOT NULL ); CREATE TABLE CHILD_ONE ( CHILD_ONE_ID INT NOT NULL, CHILD_NAME VARCHAR(100) NOT NULL, PARENT_ID INT ); --#SET TERMINATOR @ CREATE OR REPLACE TRIGGER RESET_NULL_TRIGGER BEFORE UPDATE OF PARENT_ID OR INSERT ON CHILD_ONE REFERENCING NEW AS N FOR EACH ROW WHEN (N.PARENT_ID IS NULL) BEGIN ATOMIC SET N.PARENT_ID = (SELECT ID FROM NULL_LOOKUP WHERE TABLE_NAME = 'PARENT'); END @ --#SET TERMINATOR ;
您
BEGIN ATOMIC
只需BEGIN
在觸發器主體中替換為。
BEGIN ATOMIC
表示內聯複合 SQL 語句,BEGIN –編譯複合語句。文件狀態:如果指定了多個事件,則觸發的操作必須是複合 SQL(已編譯)語句。