PostgreSQL – 检查约束
在 PostgreSQL 中,CHECK 约束主要用于指定列中的值是否必须满足特定要求。 CHECK 约束利用布尔表达式在对列执行插入或更新操作之前评估值。如果值通过检查,PostgreSQL 允许将这些值插入或更新到列中。它主要在创建表时使用。
Syntax: variable_name Data-type CHECK(condition);
现在让我们进入一个示例以便更好地理解。
例子:
我们将首先创建一个employee
表,如下所示:
CREATE TABLE employees (
id serial PRIMARY KEY,
first_name VARCHAR (50),
last_name VARCHAR (50),
birth_date DATE CHECK (birth_date > '1900-01-01'),
joined_date DATE CHECK (joined_date > birth_date),
salary numeric CHECK(salary > 0)
);
现在我们将首先使用以下命令插入满足上述约束的数据:
INSERT INTO employees (
first_name,
last_name,
birth_date,
joined_date,
salary
)
VALUES
(
'Raju',
'Kumar',
'1994-01-01',
'2015-07-01',
100000
);
现在,如果我们使用以下命令检查数据插入是否成功:
SELECT * FROM employee;
我们可以看到插入的数据如下:
现在我们将尝试插入未通过检查的数据,如下所示:
INSERT INTO employees (
first_name,
last_name,
birth_date,
joined_date,
salary
)
VALUES
(
'Nikhil',
'Aggarwal',
'1972-01-01',
'2015-07-01',
- 100000
);
输出:
ERROR: new row for relation "employees" violates check constraint "employees_salary_check"
DETAIL: Failing row contains (2, Nikhil, Aggarwal, 1972-01-01, 2015-07-01, -100000)
正如我们所看到的,行为正是我们所期望的。