如何在触发器中创建临时表?

时间:2016-12-14 20:38:01

标签: mysql stored-procedures triggers temp-tables

我有桌子:Suscriptions,Suscription_Book,Books

我想在从Suscription

编辑图书库存时更新Suscription_stock

新的Suscription_stock将是其书籍的最低库存

我在Books表格中创建了一个触发器,以便在我编辑图书时更新Suscriptions。

我在触发器中创建一个临时表来保存"最低库存"在我找到我正在编辑的书中的每本书中的书籍,然后我更新了这些书籍。

但是Mysql不允许我在触发器中创建一个临时表,我试图在存储过程中创建临时表但是我得到了这个错误:无法重新打开表"最低价格' ;

这是查询:

DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;

drop table if exists lowestStock;

CREATE TEMPORARY TABLE lowestStock select d.Susc_id, min(b.Prod_stock) as min
     from Suscription_Book d inner join v_books b on b.Prod_id=d.Book_id
where d.Susc_id in (select Susc_id from Suscription_Book where Book_id=new.Book_id)
group by d.Susc_id;

SELECT COUNT(*) FROM lowestStock INTO n;
SET i=0;
WHILE i<n DO 
    update Suscriptions
        set Prod_stock = (select min from lowestStock Limit i,1)
        where Prod_id = (select Susc_id from lowestStock Limit i,1);
SET i = i + 1;
END WHILE;

drop table if exists lowestStock ;

0 个答案:

没有答案