是否可以在一个表中插入值并使用单个mysql调用更新另一个表?如果是,这是更快还是使用两个单独的呼叫更快?
例如:表1 - cars
id - color - brand
1 - red - audi
2 - blue - pontiac
table2 - people
id - name - last1 - Dave - ann
2 - beth - elane
表不关联
假设我想为people添加另一行同时更新table1 cars的color
使用存储过程…类似…
DROP PROCEDURE IF EXISTS insert_update $$
CREATE PROCEDURE insert_update
(
IN id INT,
IN color VARCHAR(10),
IN name VARCHAR(20)
)
BEGIN
-- do insert
THEN
-- do update
END IF;
注意:我没有为你写你的查询,因为你没有提供任何关于你的表的令人信服的信息,本身
在语义方面,我认为您需要执行一个事务,而不是单个查询。
如果你所有的数据都是MyISAM, 停在这里。这是不可能的
如果你所有的数据都是InnoDB,有两种模式可以设置:
<标题>范式# 1START TRANSACTION;
INSERT INTO people ...
INSERT INTO cars ...
COMMIT;
<标题>范式# 2 h1> DB会话中执行以下操作:
SET autocommit = 0;
然后执行所有insert操作,然后运行
COMMIT;
如果你关闭DB连接,一切都将回滚。所以,尽量经常提交。
标题>标题>