簡體   English   中英

將主鍵添加到現有表

[英]Add primary key to an existing table

如何在 SQLite 中的現有表中添加主鍵? 我知道我必須生成一個新表並從舊表中復制所有內容。 但是,它一直給我一個錯誤,說數據類型不匹配,因為一個表具有主鍵而另一個表沒有。 我確實在不包括主鍵的情況下運行了相同的命令,並且它可以工作。

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

INSERT INTO temp_table 
    SELECT * 
    FROM original_table

由於我是從 CSV 文件導入數據,所以我不知道如何首先添加 PRIMARY KEY。 如果有人知道解決方案,它也可以工作。

假設原始表有 2 列: 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 開始自動遞增。

如果原始表中的另一列具有唯一的 integer 值,則可以傳遞該列以填充新id

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

col更改為列的實際名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM