Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQLite数据库中的特定位置插入行_Sql_Sqlite_Sql Update_Android Sqlite_Insert Update - Fatal编程技术网

在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

我在SQLite管理器中创建数据库&我错误地忘记了提到一行

现在,我想在中间手动添加一行,在下面,其余的自动增量键应该自动增加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字段创建聚集索引。