首页 > 解决方案 > 使用 SQL UPDATE 语句时如何更改更新顺序?

问题描述

我有一个表,其中每一行都用唯一索引(1,2,3,...)编号。我想将每个条目的索引增加 4,以便在开头为四个新条目腾出空间(索引 1、2、3 和 4)。

我尝试使用:

UPDATE table SET key_index = key_index + 4;

但它会导致错误,因为如前所述,索引必须是唯一的(将 1 增加 4 会导致 5。索引 5 可能已经存在)。

如果我可以使用 UPDATE 语句,从底部开始(从最高到最低索引),那么就会有这样的错误。是否可以使用这样的 UPDATE 语句?

标签: sqlindexingsql-updateprimary-keyincrement

解决方案


这可能很棘手。我使用的一个技巧是两次更新——首先是一系列“安全”的值。其次是期望值:

update t
    set key_index = - key_index ;

update t
    set key_index = (- key_index) + 4;

您还可以删除唯一索引/约束——或在某些数据库中禁用它。


推荐阅读