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);