在不更改列内容的情况下将+1增加到id

MMD*_*MMD 1 sql oracle primary-key uniqueidentifier primary-key-design

我有随机内容随机表.

id | 名称| 任务
1 | aaaa | kitr
2 | bbbb | etre
3 | CCCCC | qwqw
4 | dddd | qwert
5 | eeee | 潜力
6 | ffffffff | TOTO


我想要的是在上面的表中添加一个id = 3的列,其中包含不同的名称和不同的任务但是OLD id = 3我想要一个id = 4,其中包含之前名称和任务的id = 4 = 3,并且OLD id = 4变为id = 5,其名称和任务为id 5,依此类推.
它就像我想要在列内部和列下面输入一列我希望增加id +1但是列保持相同.示例如下:


id | 名称| 任务
1 | aaaa | kitr
2 | bbbb | etre
3 | ZZZZZZ | zzzzz
4 | CCCCC | qwqw
5 | dddd | qwert
6 | eeee | 潜力
7 | ffffffff | TOTO

为什么我要这样做?我有一个有2个CLOB的表.在那些CLOBS内部有不同的查询ex:id = 1有一个创建表id的clob = 2列的插入id = 3创建另一个表id = 4有函数
如果你在一个文本中添加所有这个id (或clob)他们必须创建然后插入然后创建然后功能.那张桌子就像一个巨大的剧本.
为什么我这样做?开发人员正在构建他们的应用程序,他们希望sql按特定顺序工作,我有6个开发人员,正在组织数据建模和性能以及脚本的运行方式.所以上表是组织调用脚本他们很好

Mic*_*ant 7

简单地说,不要这样做.

这个案例强调了为什么你永远不应该使用任何商业价值,即主键的任何"真实世界价值".

在您的情况下,我会建议主键不用于任何其他目的.我建议您添加一个额外的列'order',然后更改THAT列以重新排序行.这样,您的主键和所有其他记录将不需要被触及.

这避免了您的方法需要更改当前记录下方的所有数据库记录的问题,这似乎是一种非常糟糕的方法.想象一下试图撤消该更新;)

这里有更多信息:https://stackoverflow.com/a/8777574/631619