SQLite數據中修改某列,對已存在的某列添加UNIQUE約束

UNIQUE 約束sql

UNIQUE 約束防止在一個特定的列存在兩個記錄具備相同的值。在 COMPANY 表中,例如,您可能要防止兩個或兩個以上的人具備相同的年齡。性能

例如,下面的 SQLite 語句建立一個新的表 COMPANY,並增長了五列。在這裏,AGE 列設置爲 UNIQUE,因此不能有兩個相同年齡的記錄:spa

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL UNIQUE,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00);

可是若是我要修改已存在的表中的某一列,對已存在的某列添加UNIQUE約束怎麼辦?code

SQLite 支持 ALTER TABLE 的有限子集。在 SQLite 中,ALTER TABLE 命令容許用戶重命名錶,或向現有表添加一個新的列。重命名列,刪除一列,或從一個表中添加或刪除約束都是不可能的。因此利用普通的sql:添加惟一索引(約束):alter table 表名 add unique (字段名1[,字段名2,...])添加UNIQUE語句是不行的。怎麼辦?索引

查詢SQlite官網中還有別的替代方法:it

方法一:經過建立惟一索引來代替
table

惟一索引class

使用惟一索引不只是爲了性能,同時也爲了數據的完整性。惟一索引不容許任何重複的值插入到表中。基本語法以下:語法

CREATE INDEX index_name
on table_name (column_name);

方法二:刪除原來的那一列,建立新的帶有unique 約束的列方法

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL UNIQUE,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00);
相關文章
相關標籤/搜索