MYSQL:使用insert在另一个表上生成的主表更新一个表

时间:2015-04-21 21:44:12

标签: mysql jdbctemplate

有没有办法用一个事务中不同表上的插入生成的主键更新一个表上的列?

以下代码示例不起作用,但也许说明了我在MySql中尝试做的事情:

UPDATE orders SET address_id = (INSERT INTO addresses() values())
WHERE order_id = 666

我正在尝试在jdbcTemplate更新的上下文中执行此操作。

2 个答案:

答案 0 :(得分:1)

您可以创建一个函数或过程并按顺序执行语句。

参见以下示例:

delimiter //

CREATE PROCEDURE insert_update_address (PARAMETERS)
BEGIN
 INSERT INTO adresses(COLUMNS) values(PARAMETERS);
 UPDATE orders SET address_id = LAST_INSERT_ID()
 WHERE order_id = Parameter1;
END//

delimiter ;

并将其命名为:

CALL insert_update_address(PARAMS);

有关详细信息,请参阅:

https://dev.mysql.com/doc/refman/5.0/en/create-procedure.html

答案 1 :(得分:0)

您可以将事务与JDBCTemplates一起使用。这样你就可以进行插入,然后进行更新。请检查此tutorial