是否可以使用单个mysql查询在没有事务的情况下在两个不同的表中插入数据?

时间:2014-04-07 18:02:30

标签: php mysql

我知道这可以使用事务,但我想使用单个mysql查询。

这是哪种常见格式交易

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

但我需要知道单个mysql查询是否可行?

4 个答案:

答案 0 :(得分:1)

不,它不能像

那样在单一声明中完成
insert into table1,table2

要么像

那样单独进行
insert into table1 ...

insert into table2 ...

(OR)

将insert语句包装在存储过程中并调用该过程,如

create procedure sp_insert_multiple
as
begin
    insert into table1 ...

    insert into table2 ...
end

致电SP

exec sp_insert_multiple

答案 1 :(得分:1)

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

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

See the following rule

答案 2 :(得分:0)

通常,无法在单个查询中插入多个表。您可以在一个表中插入多行。像是

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

答案 3 :(得分:-2)

你可以像coz那样做。

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

INSERT INTO NAMES VALUES(...)
INSERT INTO PHONES VALUES(...)

这是一个详细答案的链接..

sql - insert into multiple tables in one query