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

时间:2019-03-08 20:14:53

标签: mysql

我需要在一个查询中将数据插入到mysql表中。查询插入多个记录,第二个记录需要获取第一个记录的ID,并将其填充在parentid列中。我是脚本查询的新手,而且我不知道该如何完成。

示例:

| id | parentid |
| 1  | null     |
| 2  | 1        |

2 个答案:

答案 0 :(得分:1)

否,不能在单个查询中完成。

MySQL没有实现“可延迟约束”的标准 SQL功能,该功能对于此查询(INSERT)成功而言是必需的。但是,可以在PostgreSQL或Oracle中找到解决方案。

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

答案 1 :(得分:1)

您可以使用LAST_INSERT_ID,但我认为这不会被视为“一个查询”:

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