在SQLite数据库中的特定位置插入行
我在SQLite管理器中创建数据库&我错误地忘记了提到一行在SQLite数据库中的特定位置插入行,sql,sqlite,sql-update,android-sqlite,insert-update,Sql,Sqlite,Sql Update,Android Sqlite,Insert Update,我在SQLite管理器中创建数据库&我错误地忘记了提到一行 现在,我想在中间手动添加一行,在下面,其余的自动增量键应该自动增加1。我希望我的问题很清楚 谢谢。您不应该关心键值,只需在末尾追加行即可 如果您真的需要这样做,您可能只需要用这样的东西更新密钥。如果要在键87处插入新行 腾出地方放钥匙 update mytable set key = key + 1 where key >= 87 插入您的行 insert into mytable ... 最后更新新行的键 update my
现在,我想在中间手动添加一行,在下面,其余的自动增量键应该自动增加1。我希望我的问题很清楚
谢谢。您不应该关心键值,只需在末尾追加行即可 如果您真的需要这样做,您可能只需要用这样的东西更新密钥。如果要在键87处插入新行 腾出地方放钥匙
update mytable
set key = key + 1
where key >= 87
插入您的行
insert into mytable ...
最后更新新行的键
update mytable
set key = 87
where key = NEW_ROW_KEY
我只需更新ID,增加它们,然后手动插入记录设置ID:
CREATE TABLE cats (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR
);
INSERT INTO cats (name) VALUES ('John');
INSERT INTO cats (name) VALUES ('Mark');
SELECT * FROM cats;
| 1 | John |
| 2 | Mark |
UPDATE cats SET ID = ID + 1 WHERE ID >= 2; -- "2" is the ID of forgotten record.
SELECT * FROM cats;
| 1 | John |
| 3 | Mark |
INSERT INTO cats (id, name) VALUES (2, 'SlowCat'); -- "2" is the ID of forgotten record.
SELECT * FROM cats;
| 1 | John |
| 2 | SlowCat |
| 3 | Mark |
使用自动增量功能插入的下一条记录将具有倒数第二个ID(在本例中为4)。您不必关心键值,只需在末尾追加您的行即可。为什么您认为它在您的案例中很重要?因此,将位置x后的行剪切到临时表中,然后插入将放置在位置x的记录,然后将复制的数据从临时表复制到临时表中。或者更新(
row\u no=row\u no+1
)x位置后的数据并插入一个值为x的行,不要伪造为row\u no字段创建聚集索引。