📜  PostgreSQL – 检查约束

📅  最后修改于: 2022-05-13 01:57:15.420000             🧑  作者: Mango

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)

正如我们所看到的,行为正是我们所期望的。