Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否可以使用一个mysql查询在两个不同的表中插入数据而不使用事务?_Php_Mysql - Fatal编程技术网

Php 是否可以使用一个mysql查询在两个不同的表中插入数据而不使用事务?

Php 是否可以使用一个mysql查询在两个不同的表中插入数据而不使用事务?,php,mysql,Php,Mysql,我知道这是可能的使用事务,但我想做它使用单一的mysql查询 这是哪种常见格式的事务 START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT; 但是我需要知道单个mysql查询是可能的吗?你可以像coz那样做 MySQL不支持在单个INSERT语句中插入多个表 INSERT INTO NAMES VALUES(...

我知道这是可能的使用事务,但我想做它使用单一的mysql查询

这是哪种常见格式的事务

START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;

但是我需要知道单个mysql查询是可能的吗?

你可以像coz那样做

MySQL不支持在单个INSERT语句中插入多个表

INSERT INTO NAMES VALUES(...)
INSERT INTO PHONES VALUES(...)
这是一个详细答案的链接


不,它不能像

insert into table1,table2
要么你喜欢

insert into table1 ...

insert into table2 ...
(或)

将insert语句包装在存储过程中,并像下面那样调用该过程

create procedure sp_insert_multiple
as
begin
    insert into table1 ...

    insert into table2 ...
end
打电话给SP

exec sp_insert_multiple

通常不可能在单个查询中插入多个表。可以在一个表中插入多行。像

INSERT INTO tbl_test
(a1,a2,a3)
VALUES
(1,2,3),
(4,5,6),
(7,8,9);
您可以在Oracle中执行此操作

通过使用过程,您可以插入

create procedure insert_query
as
begin
insert into tbl_test1(a1,a2,a3) VALUES (1,2,3)
insert into tbl_test2 (b1,b2,b3) VALUES (1,2,3)
end

你不能这样做。但是,您可以使用一个事务,并将它们都包含在一个事务中

START TRANSACTION;
INSERT INTO table_1 VALUES ('1','2','3');
INSERT INTO table_2 VALUES ('one','two','three');
COMMIT;

您真的需要在一个查询或一个事务中完成这项工作吗?在MySql中,不能在一个查询中完成这项工作。如果您正在使用InnoDb,只需使用
start transaction
,然后在末尾插入两个
insert
commit
。@Haaron,但这个答案说
您不能在MySql中执行,但可以在Oracle中执行。当然,在Oracle中这是可能的,但问题是关于MySql的。Kodirko是的,在MySql中你不能这么做。不是两个插入查询,只有一个插入查询我相信同一个问题的另一个答案对你有用,基本上是两个查询。。正如我所建议的。。伙计,不是两个查询,只有一个插入query@ShafiqulIslam,不能在单个insert语句中向多个表插入值。