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