[問題] MySQL Trigger 宣告、使用變數

看板Database作者 (Mr. Pan)時間14年前 (2011/08/24 02:38), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
最近剛開始摸 MySQL 的 Trigger,雖然爬了一些文 可是還是不太清楚 trigger 裡面程式的寫法, table2 是紀錄 table1 中,同 otid 最大的 tid 是多少 Ex : tid otid table1 1 1 2 1 1 2 1 3 2 3 3 3 table2 2 1 <- 表示 table1 中, otid=1 最大的 tid 是 2 1 2 <- 表示 table1 中, otid=2 最大的 tid 是 1 3 3 <- 表示 table1 中, otid=3 最大的 tid 是 3 底下是我寫的一個 Trigger,目的是當 table1 發生 INSERT 後,要把同 otid 中最大的 tid 更新到 table2 DELIMITER | CREATE TRIGGER TriggerTest AFTER INSERT ON table1 FOR EACH ROW BGIN DECLARE hasOld INT; DECLARE newTid INT; SET hasOld = (SELECT 1 FROM table2 WHERE otid=NEW.otid LIMIT 0,1); SET newTid = (SELECT max(tid) FROM table1 WHERE otid=NEW.otid); IF hasOld==1 THEN UPDATE table2 SET tid=newTid WHERE otid=NEW.otid; ELSE INSERT INTO table2 (tid , otid ) VALUES (NEW.tid , NEW.otid); END IF; END | 大概看了一下,網路上使用變數好像有 DECLARE var TYPE 還有 @var 兩種用法 不過在我把上面的語法打進去時,就會出現錯誤: 表示錯誤在 DECLARE hasOld INT; DECLARE newTid INT; SET hasOld = (SELECT 1 FROM table2 WHERE otid=NEW.otid LIMIT 0,1); 附近.... 想請問一下如果再 trigger 裡面要使用變數的話該怎麼處理呢? 而我這個變數是要儲存 SELECT 出來的資料。 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.182.17

08/24 15:30, , 1F
自己發現問題... 原來是 BEGIN 少打 E...
08/24 15:30, 1F
文章代碼(AID): #1EK_Ej_b (Database)