sqlite 将主键添加到现有表

3pvhb19x  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(199)

如何将主键添加到SQLite中现有的表中?我知道我必须生成一个新表,并从旧表中复制所有内容。但是,它总是给我一个错误,说数据类型不匹配是因为一个表有主键,而另一个表没有。我确实在不包括主键的情况下运行了相同的命令,并且运行正常。

CREATE TABLE temp_table 
(
    id INTEGER PRIMARY KEY, 
    age INTEGER, 
    address TEXT
)

INSERT INTO temp_table 
    SELECT * 
    FROM original_table

因为我是从CSV文件导入数据,所以我一开始就不知道如何添加主键。如果有人知道这个问题的解决方案,它也会奏效。

js4nwp54

js4nwp541#

假设原始表有两列:ageaddress,您可以列出没有主键的新表的列名:

INSERT INTO temp_table(age, address) 
SELECT age, address FROM original_table

或者,包括主键并传递null作为其值:

INSERT INTO temp_table(id, age, address) 
SELECT null, age, address FROM original_table

或者:

INSERT INTO temp_table
SELECT null, age, address FROM original_table

在所有情况下,id都将由SQLite填充,因为它被定义为INTEGER PRIMARY KEY,并且它将从1开始自动递增。
如果原始表中有另一列具有唯一的整数值,则可以传递该列以填充新的id

INSERT INTO temp_table(id, age, address) 
SELECT col, age, address FROM original_table

col更改为列的实际名称。

相关问题