Php 我可以在一次调用中对不同的表(带索引)组合更新和插入吗?

Php 我可以在一次调用中对不同的表(带索引)组合更新和插入吗?,php,mysql,Php,Mysql,是否可以通过一个mysql调用向一个表插入值并更新另一个表?如果是,使用两个单独的电话是更快还是更快 例如: 表1-汽车 id-颜色-品牌 1-红色-奥迪 2-蓝色-庞蒂亚克 表2-人员 id-name-last 1-戴夫-安 2-贝丝-伊兰 表格不相关 假设我想在更新table1汽车颜色的同时为人物添加另一行 这可能吗?使用存储过程。。。类似于 DROP PROCEDURE IF EXISTS insert_update $$ CREATE PROCEDURE insert_update (

是否可以通过一个mysql调用向一个表插入值并更新另一个表?如果是,使用两个单独的电话是更快还是更快

例如:

表1-汽车

id-颜色-品牌

1-红色-奥迪

2-蓝色-庞蒂亚克

表2-人员

id-name-last

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,那么可以设置两种范例:

范式1 范例2 在DB会话中执行以下操作:

SET autocommit = 0;
然后执行所有需要的插入,然后运行

COMMIT;

如果关闭数据库连接,一切都将回滚。因此,请经常尝试提交。

您不能将它们合并到一个语句中,但可以使用。我不知道会快多少,我明白了。PDO中有类似的东西吗?不太熟悉,但快速搜索提供了一个使用PDO_MYSQLND的例子:你是什么意思?同时,你是指交易吗?如果你给我们一些线索,告诉我们你为什么问这个问题,你会得到更多的帮助。就我而言,我正在努力想出一个问题,这将是一个解决方案……好吧,没有一个问题,我想我会检查是否有可能运行这两个查询相同的语句来节省时间。
COMMIT;