作者darkk6 (Mr. Pan)
看板Database
标题[问题] MySQL Trigger 宣告、使用变数
时间Wed Aug 24 02:38:35 2011
最近刚开始摸 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
1F:→ darkk6:自己发现问题... 原来是 BEGIN 少打 E... 08/24 15:30