有没有办法用一个事务中不同表上的插入生成的主键更新一个表上的列?
以下代码示例不起作用,但也许说明了我在MySql中尝试做的事情:
UPDATE orders SET address_id = (INSERT INTO addresses() values())
WHERE order_id = 666
我正在尝试在jdbcTemplate更新的上下文中执行此操作。
答案 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。