SQLite主鍵是用於唯一定義行記錄的一個簡單字段或多個字段的組合。一個表只能有一個主鍵。
主鍵的值不可以是一個NULL
值。
創建主鍵
主鍵通常在創建表時一同創建。在執行CREATE TABLE
語句時可以直接定義主鍵。
CREATE TABLE table_name (column1 datatype [ NULL | NOT NULL ],column2 datatype [ NULL | NOT NULL ],......CONSTRAINT constraint_name PRIMARY KEY (pk_col1, pk_col2, ... pk_col_n));
注釋:
- table_name:指定要創建的表的名稱。
- column1,column2:指定要在表中創建的列。
- constraint_name:指定主鍵的名稱。
- pk_col1,pk_col2,… pk_col_n:它指定構成主鍵的列。
e.g.創建一個“workers
”表,其中worker_id
列是表的主鍵。
添加主鍵
當沒有在CREATE TABLE
語句中定義主鍵時,也可以在創建表后再添加主鍵。
需要注意的是,不能使用ALTER TABLE
語句來創建主鍵。在SQLite中需要先創建一個與原表一樣的新表,並在這個新表上創建主鍵,然后復制舊表中的所有數據到新表中就可以了。
PRAGMA foreign_keys =off;BEGIN TRANSACTION;ALTER TABLE table_name RENAME TO old_table;CREATE TABLE table_name (column1 datatype [ NULL | NOT NULL ],column2 datatype [ NULL | NOT NULL ],... CONSTRAINT constraint_name PRIMARY KEY (pk_col1, pk_col2, ... pk_col_n));INSERT INTO table_name SELECT * FROM old_table;COMMIT;PRAGMA foreign_keys=on;
- table_name:指定要創建含有主鍵的表的名稱。
- old_table:指定要被修表的名稱。
- column1,column2:指定要在表中創建的列。
- constraint_name:指定主鍵的名稱。
- pk_col1,pk_col2,… pk_col_n:它指定構成主鍵的列。
參考:
https://www.yiibai.com/sqlite/primary-key.html