Py学习  »  DATABASE

插入mysql 2记录,第二条记录引用记录1中新创建的id?

kroe761 • 5 年前 • 1378 次点击  

我需要在一个查询中将数据插入到mysql表中。查询插入多条记录,第二条记录需要获取第一条记录的id并将其填充到parentid列中。我是新来的脚本查询,我不知道如何实现这一点。

例子:

| id | parentid |
| 1  | null     |
| 2  | 1        |
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43022
 
1378 次点击  
文章 [ 2 ]  |  最新文章 5 年前
The Impaler
Reply   •   1 楼
The Impaler    6 年前

不,不能在 单一的 查询。

MySQL没有实现 标准 此查询所需的“可延迟约束”的SQL功能( INSERT )为了成功。不过,在postgresql或oracle中也可以找到解决方案。

这在mysql中是不可能实现的,因为在插入第二行的过程中,它的外键约束将失败,因为第一行还没有“正式”存在——尽管已经插入。但是,如果FK约束检查推迟到SQL语句结束(或事务结束),查询将成功完成…但这并没有在mysql中实现。

Caleb Goodman
Reply   •   2 楼
Caleb Goodman    6 年前

你可以用 LAST_INSERT_ID ,但我不认为这是“一个查询”:

START TRANSACTION;
BEGIN;
INSERT INTO tablename (parent_id) VALUES
(NULL);
INSERT INTO tablename (parent_id) VALUES
(LAST_INSERT_ID());
COMMIT;