sql - 使用 SQL UPDATE 语句时如何更改更新顺序?
问题描述
我有一个表,其中每一行都用唯一索引(1,2,3,...)编号。我想将每个条目的索引增加 4,以便在开头为四个新条目腾出空间(索引 1、2、3 和 4)。
我尝试使用:
UPDATE table SET key_index = key_index + 4;
但它会导致错误,因为如前所述,索引必须是唯一的(将 1 增加 4 会导致 5。索引 5 可能已经存在)。
如果我可以使用 UPDATE 语句,从底部开始(从最高到最低索引),那么就会有这样的错误。是否可以使用这样的 UPDATE 语句?
解决方案
这可能很棘手。我使用的一个技巧是两次更新——首先是一系列“安全”的值。其次是期望值:
update t
set key_index = - key_index ;
update t
set key_index = (- key_index) + 4;
您还可以删除唯一索引/约束——或在某些数据库中禁用它。
推荐阅读
- gtk - 如何使用菜单按钮 (Gtkmm)
- javascript - 添加导入后,我的 chrome 扩展程序立即停止工作
- javascript - React - 从 JSON 响应动态设置 backgroundImage
- c++ - 当引用的变量从外部更改时,使用对 const 的引用是否安全?
- javascript - React Hooks:Hooks 只能在函数组件内部调用
- pandas - Pandas 数据框选择 df['a'][50][:51]
- python - 如何在我的 JSON 列表中添加新字典
- apache-arrow - 我们如何在 Apache Arrow 中存储哈希表?
- java - Maven 在代码中下载依赖项
- jquery - 如何让一个html页面上的事件更改影响另一个使用jquery有条件的页面?