查询是否在插入当前id的情况下更新表列?

时间:2014-09-06 04:34:08

标签: mysql sql sql-update

我只是想知道这是否可以在MySQL中使用。

这是我的疑问:

update stock_trans_detail_copy_origa od

insert into item_stock_detail_copy_origa(item_stock_id,quantity,unit_cost)
select o.item_stock_id,a.item_stock_detail_balance,a.unit_cost from stock_trans_detail_copy_origa a 
inner join item_stock_copy_origa o on o.item_id = a.item_id and o.inv_loc_id = a.inv_loc_id

set od.item_stock_detail_id = last_insert_id();

在将新记录插入特定表时,我还想使用新插入记录中的值更新另一个表。

然后我尝试了这个触发器,但是给出了一个错误:SQL错误(1442):无法在存储的函数/触发器中更新表'stock_trans_detaila',因为它已被调用此存储函数/触发器的语句使用。

CREATE TRIGGER `item_stock_detaila_after_insert` AFTER INSERT ON `item_stock_detaila` FOR EACH ROW BEGIN

update stock_trans_detaila
set item_stock_detail_id = new.item_stock_detail_id;

END

这是我插入记录的代码:

insert into item_stock_detaila(item_stock_id,quantity,unit_cost)
select o.item_stock_id,a.item_stock_detail_balance,a.unit_cost from stock_trans_detaila a 
inner join item_stock o on o.item_id = a.item_id and o.inv_loc_id = a.inv_loc_id;

1 个答案:

答案 0 :(得分:2)

触发器最适合您的方法。试着参考

http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html

创建触发后,将新插入的记录插入其他表

例如

CREATE TRIGGER ins_sum BEFORE INSERT ON account
FOR EACH ROW SET @sum = @sum + NEW.amount;