1

我有这样的表:

表格1:

sr no. | id | name

id 是这里的主键。我想要sr no.循环。
我应该赋予sr no.字段什么属性?

例如,我有 5 条记录,分别为sr no1,2,3,4,5 和id1,2,3,4,5,我删除第三条记录然后id将是 1,2,4,5 和sr no.1,2,3, 4 sr no不应该失去它的争议性。

4

3 回答 3

4
SELECT  @a:=@a+1 serial_number, 
        name  FROM    table1,
        (SELECT @a:= 0) AS a;
于 2013-02-27T12:05:19.053 回答
1

id已经是你的主键了,你还需要sr no.什么?建议忘记它。

如果您真的需要它,请在此处查看我的答案,原因有几个原因,为什么这是一个非常糟糕的主意。最重要的原因:

当您删除一行时,MySQL 不会自动减小自动增量值是有原因的。这些原因是

  • 破坏数据完整性的危险(想象多个用户执行删除或插入......可能会出现双重条目或更糟)
  • 使用主从复制或事务时可能会出现错误
  • 等等 ...

无需担心间隙。

要回答您的问题,只需添加auto_increment列定义并将其包含在主键中即可。

于 2013-02-27T11:32:00.060 回答
1

我不知道 sr no 的真正目的。

但是您可以为该表创建DELETETrigger操作,现在您可以更新大于当前 ID 的记录,以便 sr no 减 1。

例如,您可以在触发器中编写以下 SQL,

UPDATE table1 SET sr_no = sr_no -1 WHERE id > XYZ;
于 2013-02-27T11:35:49.143 回答