PostgreSQL – 唯一索引
在 PostgreSQL 中,UNIQUE索引确保一列或多列中值的唯一性。要创建UNIQUE索引,您可以使用以下语法:
Syntax:
CREATE UNIQUE INDEX index_name
ON table_name(column_name, [...]);
注意:只有 B-tree 索引可以声明为唯一索引。
示例 1:
以下语句创建一个名为员工的表:
CREATE TABLE employees (
employee_id SERIAL PRIMARY KEY,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE
);
在该语句中,employee_id 是主键列,email 列具有唯一约束,因此,PostgreSQL 创建了两个 UNIQUE 索引,每个索引一个。
要显示员工表的索引,请使用以下语句:
SELECT
tablename,
indexname,
indexdef
FROM
pg_indexes
WHERE
tablename = 'employees';
输出:
示例 2:
以下语句添加了mobile_phone 给员工的专栏 我们在上面的例子中创建的表:
ALTER TABLE employees
ADD mobile_phone VARCHAR(20);
为了确保所有员工的手机号码都是不同的,您可以为 mobile_phone 列定义一个 UNIQUE索引,如下所示:
CREATE UNIQUE INDEX idx_employees_mobile_phone
ON employees(mobile_phone);
现在让我们测试一下。首先,在雇员表中插入一个新行:
INSERT INTO employees(first_name, last_name, email, mobile_phone)
VALUES ('Raju', 'kumar', 'raju.kumar@geeksforgeeks.org', '(408)-555-1234');
其次,尝试插入具有相同电话号码的另一行:
INSERT INTO employees(first_name, last_name, email, mobile_phone)
VALUES ('Nikhil', 'Aggarwal', 'nikhil.aggarwal@gfg.org', '(408)-555-1234');
这应该会引发错误。
输出:
正如我们所观察到的,行为正是对唯一索引的预期。