[問題] MySQL Trigger 宣告、使用變數
最近剛開始摸 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
08/24 15:30, 1F