gpt4 book ai didi

触发器调用过程时出现 MySQL 错误

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:39 25 4
gpt4 key购买 nike

我有一个表 (ft_ttd),我想对其进行降序排序 (num),并将评分数字插入评分列。

Initial Table http://dl.dropbox.com/u/3922390/2.png

类似的东西:

Result Table http://dl.dropbox.com/u/3922390/1.png

我已经创建了一个过程。

CREATE PROCEDURE proc_ft_ttd_sort  
BEGIN

CREATE TEMPORARY TABLE ft_ttd_sort
(id int (2),
num int (3),
rating int (2) AUTO_INCREMENT PRIMARY KEY);

INSERT INTO ft_ttd_sort (id, num) SELECT id, num FROM ft_ttd ORDER BY num DESC;
TRUNCATE TABLE ft_ttd;
INSERT INTO ft_ttd SELECT * FROM ft_ttd_sort;
DROP TABLE ft_ttd_sort;
END;

当我调用它时 - 它运行良好。

CALL proc_ft_ttd_sort;

之后,我创建了调用此过程的触发器。

CREATE TRIGGER au_ft_ttd_fer AFTER UPDATE ON ft_ttd FOR EACH ROW 
BEGIN
CALL proc_ft_ttd_sort();
END;

现在每次更新 ft_ttd 表时都会出错。

UPDATE ft_ttd SET num = 9 WHERE id = 3;
ERROR 1422 (HY000): Explicit or implicit commit is not allowed in stored function ortrigger.

有什么想法可以让它发挥作用吗?也许这个过程可以优化?谢谢!

最佳答案

create table 语句是隐式提交,因为它是 DDL。基本上,答案是您不能在触发器中创建表。

http://dev.mysql.com/doc/refman/5.0/en/stored-program-restrictions.html

关于触发器调用过程时出现 MySQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8051431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com