【发布时间】:2013-08-05 14:04:25
【问题描述】:
我有一个包含字段(id、brand、model、os)的表 id作为主键
表格有 ~ 6000 行
现在我想添加 id=4012(已经存在)的新字段并为 id>4012 增加 id++
最愚蠢的方式:
制作表备份
删除 id >= 4012 的条目
插入 id = 4012 的新条目
从备份中恢复表
愚蠢,但有效))
寻找更漂亮的解决方案 谢谢
表结构:
CREATE TABLE IF NOT EXISTS `mobileslist` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`brand` text NOT NULL,
`model` text NOT NULL,
`os` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=14823 ;
我试试:
UPDATE mobileslist SET id = id + 1 WHERE id IN (SELECT id FROM mobileslist WHERE id >= 4822 ORDER BY id);
但得到了答案:
1093 - 您不能在 FROM 子句中指定目标表 'mobileslist' 进行更新
【问题讨论】:
-
为什么你需要这样做而不是使用默认的主键值?
-
这听起来像是一个糟糕的数据库设计。您能给我们提供更多背景信息吗?
-
只需要插入位置固定的新条目
-
用于一个品牌的组合车型(紧凑型)
标签: mysql insert key duplicates