SQLite无所事事和PRIMARY KEY更改

时间:2017-07-29 16:47:24

标签: sql database sqlite sqlite2

出于某种原因,在搜索数据类型时出现了SQLite 2文档SQLite 2 documentation on typlessness,我读到了无法解决的问题。我后来意识到版本2的最后一个版本是在2004年。然后我搜索了版本3的文档SQLite 3 documentation,并意识到“无类型”这个词没有出现,但是看起来该版本在版本3中得到了维护。现在从“无类型”到“动态打字”的术语是否有转换?

另外,我尝试在测试数据库中更改主键[版本2的文档说我不能]并且我能够更改它。

Table schema Changing primary key

SQLite 3是不是无类型的,可以在SQLite3中更改主键吗?

编辑:感谢Varro,我尝试了以下内容,并且能够看到我不能将字符串作为id放入。我也尝试插入一个额外的行,并且自动添加的id为11而不是2,即使编号从1开始但更改为10.因此,似乎SQLite检查前一个整数,然后选择下一行应该编号的内容。

Trying string for id PRIMARY KEY

1 个答案:

答案 0 :(得分:1)

一般情况下(禁止显式约束),您可以在SQLite中的任何列中插入任何类型的值,但是如果您声明列INTEGER PRIMARY KEY,则会出现一个值得注意的例外,这意味着它是内部的别名(整数)rowid。请注意,您更改了上面示例中主键的,而不是类型。这是合法的(假设新值是唯一的),但将其改为例如'abc'则不会。