mysql - 使用已存在的主键将新行插入到 mysql 表中

标签 mysql primary-key

我有一个像这样的 mysql 表:

PK    other_id    name      url
1         1       jeff      www.jeff.com
2         2       steve     www.steve.com
3         3       jenn      www.jenn.com
4         4       susan     www.susan.com
5         5       melissa   www.melissa.com

我需要在主键为 3 的表中输入一个新行。该主键已被占用,因此我必须以某种方式拆分该数据 block ,插入新的 PK=3 的新行,然后附加剩余的行现在将从 PK=4 开始。

PK    other_id    name      url
1         1       jeff      www.jeff.com
2         2       steve     www.steve.com
3         3       josh      www.josh.com  <---- new row added with PK=3
4         4       jenn      www.jenn.com
5         5       susan     www.susan.com
6         6       melissa   www.melissa.com

我尝试了更改表技术,但没有成功。

最佳答案

您可以执行以下操作

INSERT INTO mytable VALUES(....);
SELECT @ID:=LAST_INSERT_ID();
UPDATE mytable SET PK=PK+1, other_id=other_id+1 WHERE PK>=3;
UPDATE mytable SET PK=3, other_id=3 WHERE PK=@ID;

关于mysql - 使用已存在的主键将新行插入到 mysql 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28548691/

相关文章:

php - 图片上传到 blob 不起作用

php - MySQL查询题..我放弃!

sql - 多列主键还是唯一约束?

sql - 主键定义上的HSQLDB错误

database - 一个实体可以有多个主键吗?模型

python - Python 中的两个 MySQL 数据库

mysql - 如何使用node js更新mysql中的多行

mysql - 需要提取 logID 并将其用作storedProc 中的变量

mysql - 无法创建外键(错误 1072)

hibernate - 有没有办法基于唯一键而不是主键(在 Hibernate 中)合并 JPA 实体?