我有这样的表:
表格1:
sr no. | id | name
id 是这里的主键。我想要sr no.
循环。
我应该赋予sr no.
字段什么属性?
例如,我有 5 条记录,分别为sr no
1,2,3,4,5 和id
1,2,3,4,5,我删除第三条记录然后id
将是 1,2,4,5 和sr no.
1,2,3, 4
sr no
不应该失去它的争议性。
我有这样的表:
表格1:
sr no. | id | name
id 是这里的主键。我想要sr no.
循环。
我应该赋予sr no.
字段什么属性?
例如,我有 5 条记录,分别为sr no
1,2,3,4,5 和id
1,2,3,4,5,我删除第三条记录然后id
将是 1,2,4,5 和sr no.
1,2,3, 4
sr no
不应该失去它的争议性。
SELECT @a:=@a+1 serial_number,
name FROM table1,
(SELECT @a:= 0) AS a;
id
已经是你的主键了,你还需要sr no.
什么?建议忘记它。
如果您真的需要它,请在此处查看我的答案,原因有几个原因,为什么这是一个非常糟糕的主意。最重要的原因:
当您删除一行时,MySQL 不会自动减小自动增量值是有原因的。这些原因是
- 破坏数据完整性的危险(想象多个用户执行删除或插入......可能会出现双重条目或更糟)
- 使用主从复制或事务时可能会出现错误
- 等等 ...
无需担心间隙。
要回答您的问题,只需添加auto_increment
列定义并将其包含在主键中即可。
我不知道 sr no 的真正目的。
但是您可以为该表创建DELETETrigger
操作,现在您可以更新大于当前 ID 的记录,以便 sr no 减 1。
例如,您可以在触发器中编写以下 SQL,
UPDATE table1 SET sr_no = sr_no -1 WHERE id > XYZ;