是否可以将值插入一个表并使用单个 mysql 调用更新另一个表?如果是,这是更快还是使用两个单独的调用更快?
例如:
表 1 - 汽车
id - 颜色 - 品牌
1 - 红色 - 奥迪
2-蓝色-庞蒂亚克
表 2 - 人
id - 姓名 - 姓氏
1 - 戴夫 - 安
2 - 贝丝 - 伊莱恩
表不相关
假设我想在更新 table1 汽车颜色的同时向人们添加另一行
那可能吗 ?
使用存储过程...类似...
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,则可以设置两种范式:
START TRANSACTION;
INSERT INTO people ...
INSERT INTO cars ...
COMMIT;
在数据库会话中执行以下操作:
SET autocommit = 0;
然后做所有你想要的插入然后运行
COMMIT;
如果关闭数据库连接,一切都会回滚。所以,试着经常提交。