Chinaunix

标题: 请教mysql触发器语句中变量使用 [打印本页]

作者: truemyself    时间: 2008-02-13 18:49
标题: 请教mysql触发器语句中变量使用
Hi,大家新年好!

想创建一个触发器,但是其中的表名是变化的,查了很多资料,还是不对。请知道的朋友指导一下,非常感谢!

CREATE TRIGGER trig_cc_update
AFTER UPDATE
ON word FOR EACH ROW
BEGIN
INSERT INTO bb(id, name,age) SELECT id, name, age FROM aa WHERE id = OLD.id;
END;
//


其中表名aa是变化的,可能是aa0,aa1,...aan,其中n=OLD.id%5。
作者: yueliangdao0608    时间: 2008-02-14 15:25
·         SQL预处理语句(PREPARE、EXECUTE、DEALLOCATE PREPARE)。隐含意义:不能在存储子程序中使用动态SQL语句(其中,能够以字符串形式构造动态语句,然后执行它们)。从MySQL 5.0.13开始,对于存储程序放宽了该限制,但该限制仍适用于存储函数和触发程序。
作者: truemyself    时间: 2008-02-14 15:49
也就是说不能在function与trigger中使用变量吗?
作者: truemyself    时间: 2008-02-14 16:39
标题: 看来只能用最笨的方法了
set id=OLD.id%5;
IF id=0
INSERT INTO bb(id, name,age) SELECT id, name, age FROM aa0 WHERE id = OLD.id;
ELSEIF id=1
INSERT INTO bb(id, name,age) SELECT id, name, age FROM aa1 WHERE id = OLD.id;
...
ENDIF;
ENDIF;

作者: yejr    时间: 2008-02-15 14:50
原帖由 truemyself 于 2008-2-14 16:39 发表
set id=OLD.id%5;
IF id=0
INSERT INTO bb(id, name,age) SELECT id, name, age FROM aa0 WHERE id = OLD.id;
ELSEIF id=1
INSERT INTO bb(id, name,age) SELECT id, name, age FROM aa1 WHERE id = OLD.id ...


呵呵,只能这么用了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2