yos*_*ssi 32 mysql sql multiple-tables insert-into
假设我有两个表,names
并且phones
我想将一些输入的数据插入到表中,在一个查询中 - 如何才能完成?
如果可以,请解释语法.
Jos*_*ith 63
你不能.但是,您可以使用事务并将它们都包含在一个事务中.
START TRANSACTION;
INSERT INTO table1 VALUES ('1','2','3');
INSERT INTO table2 VALUES ('bob','smith');
COMMIT;
Run Code Online (Sandbox Code Playgroud)
http://dev.mysql.com/doc/refman/5.1/en/commit.html
OMG*_*ies 19
MySQL不支持在单个INSERT语句中插入多表.奇怪的是,甲骨文是唯一一个我知道的东西.
INSERT INTO NAMES VALUES(...)
INSERT INTO PHONES VALUES(...)
Run Code Online (Sandbox Code Playgroud)
老问题,但万一有人发现它有用......在 Posgresql、MariaDB 和可能 MySQL 8+ 中,您可能会在不使用WITH语句进行事务的情况下实现相同的目标。
WITH names_inserted AS (
INSERT INTO names ('John Doe') RETURNING *
), phones_inserted AS (
INSERT INTO phones (id_name, phone) (
SELECT names_inserted.id, '123-123-123' as phone
) RETURNING *
) SELECT * FROM names_inserted
LEFT JOIN phones_inserted
ON
phones_inserted.id_name=names_inserted.id
Run Code Online (Sandbox Code Playgroud)
在这种情况下,与事务相比,这种技术没有太多优势,但作为一种选择......或者如果您的系统由于某种原因不支持事务......
PS 我知道这是一个 Postgresql 示例,但看起来 MariaDB 完全支持此类查询。在 MySQL 中,我想你可能只使用 LAST_INSERT_ID() 而不是 RETURNING * 和一些小的调整。
归档时间: |
|
查看次数: |
115238 次 |
最近记录: |