【问题标题】:Change row id without corrupting auto increment sqlite更改行 ID 而不会破坏自动增量 sqlite
【发布时间】:2017-10-22 15:47:30
【问题描述】:

我有一个 10 行的 sqlite 表。结构是这样的:

--------------------
id - Name - Address
1  - John - LA
2  - Mike - CA
      ...
---------------------

我想将最后一行 id (id = 10) 更改为 (id = 2) 并将第二行 (id = 2) 更改为最后一行 (id = 10) 而不会破坏自动增量所以当我插入时新行不会中断或重新开始。

我怎样才能做到这一点?

【问题讨论】:

  • 你能更新这两行的值吗?
  • 不要弄乱自动增量列。只是不要。
  • 是的,但是表格有 14 列,这并不容易

标签: sqlite auto-increment


【解决方案1】:

Autoincrementing 是关于表中使用的 最大 值,因此您可以简单地使用一些您知道不会使用的 small 值:

BEGIN;
UPDATE MyTable SET rowid = -12345 WHERE rowid = 10;
UPDATE MyTable SET rowid = 10     WHERE rowid = 2;
UPDATE MyTable SET rowid = 2      WHERE rowid = -12345;
COMMIT;

【讨论】:

  • 谢谢!它工作正常。我只需要在查询开头添加COMMIT; 以避免错误:cannot start a transaction within a transaction: BEGIN; 再次感谢
  • 嗯,你应该知道你是否已经开始交易了。 (Python 除外,tries to be clever。)
猜你喜欢
  • 2018-11-21
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多