【发布时间】:2013-03-30 22:55:27
【问题描述】:
假设我在 MySQL 数据库中有一个名为“Test”的表(其中 id 是主键):
id | entry |
---+-------+
1 | a |
2 | b |
3 | c |
4 | c |
5 | d |
6 | e |
我想知道的是,在从表中删除一行后,如何将 id 值保留在序列 {1, 2, 3, ..., n-1, n} 中。例如,假设我执行以下操作:
DELETE FROM Test WHERE id = 4;
那么我希望表格在删除后看起来像这样:
id | entry |
---+-------+
1 | a |
2 | b |
3 | c |
4 | d |
5 | e |
我认为解决方案是使用数据库触发器,但我不太确定如何创建实现此行为的触发器。
【问题讨论】:
-
这样做的目的是什么?
-
嗯,我正计划为在线图片库创建一个数据库,其中每个图片都将通过表中的唯一 id 值来标识。这样我就可以创建一个干净的 URL,例如 mywebsite/art/image_index,其中 image_index 是表的 id。如果要从图库中删除某些图像,那么我认为将图像 x.jpg 由 1 的 id 表示并且它的后继图像 y.jpg 由 5 的 id 表示(例如)这样是不整洁的会乱序(而且不直观?)。