社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

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

kroe761 • 6 年前 • 1427 次点击  

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

例子:

| id | parentid |
| 1  | null     |
| 2  | 1        |
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43022
 
1427 次点击  
文章 [ 2 ]  |  最新文章 6 年前
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;