推荐答案
在 SQLite 中,可以通过以下两种方式定义唯一约束:
在创建表时定义唯一约束:
CREATE TABLE table_name ( column1 datatype, column2 datatype, UNIQUE (column1, column2) );
在已存在的表上添加唯一约束:
CREATE UNIQUE INDEX index_name ON table_name (column1, column2);
本题详细解读
1. 创建表时定义唯一约束
在创建表时,可以通过 UNIQUE
关键字为表中的一列或多列定义唯一约束。唯一约束确保表中的每一行在指定的列或列组合中具有唯一的值。
示例:
CREATE TABLE users ( id INTEGER PRIMARY KEY, username TEXT UNIQUE, email TEXT UNIQUE );
在这个例子中,username
和 email
列都被定义为唯一约束,这意味着表中不能有两条记录具有相同的 username
或 email
。
2. 在已存在的表上添加唯一约束
如果表已经存在,可以通过创建唯一索引来添加唯一约束。唯一索引不仅加速查询,还确保索引列中的值是唯一的。
示例:
CREATE UNIQUE INDEX idx_username ON users (username);
在这个例子中,idx_username
是一个唯一索引,它确保 users
表中的 username
列的值是唯一的。
注意事项
- 唯一约束可以应用于单列或多列。如果应用于多列,则这些列的组合值必须是唯一的。
- 如果尝试插入或更新数据时违反了唯一约束,SQLite 将抛出
UNIQUE constraint failed
错误。 - 唯一约束与主键约束不同,主键约束不仅要求唯一性,还要求列值不能为
NULL
,而唯一约束允许NULL
值(除非显式指定NOT NULL
)。