📜  PostgreSQL – 非空约束

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

PostgreSQL – 非空约束

顾名思义,PostgreSQL Not-Null 约束用于确保相应列中的任何值都不为空。在数据库世界中,NULL 是未知或缺失的信息。 NULL 值与空字符串或数字零分开。例如,您可以向某人询问电子邮件地址,如果您不知道,您可以使用 NULL 值将其插入到电子邮件列中。这表明插入时的数据是未知的。如果此人没有电子邮件地址,则可以将其更新为空字符串。

NULL 值非常特殊。例如,NULL 不等于任何其他 NULL。要检查值是否为 NULL,可以使用布尔运算符IS NULLIS NOT NULL 。表达式 NULL = NULL 返回 NULL。

PostgreSQL 提供了非空约束来实现列不能接受 NULL 值的条件。这意味着无论何时插入或更新数据,都必须指定一个不为空的值。

Syntax:  variable_name Data-type NOT NULL;

现在让我们看一个例子来更好地理解 NOT NULL 的概念。

例子:
首先,我们将创建一个带有 NOT NULL 约束的表invoice ,如下所示:



CREATE TABLE invoice(
  id serial PRIMARY KEY,
  product_id int NOT NULL,
  qty numeric NOT NULL CHECK(qty > 0),
  net_price numeric CHECK(net_price > 0) 
);

在这个阶段,我们将首先插入满足上述约束的数据,如下所示:

INSERT INTO invoice (product_id, qty, net_price)
VALUES
    ('1', '5', 255);

现在我们将使用以下命令检查数据是否已成功插入:

SELECT * FROM invoice;

这将导致以下输出:

现在我们将尝试在发票表中插入一个 NULL 值,如下所示:

INSERT INTO invoice (product_id, qty, net_price)
VALUES
    ('1', NULL, 255);

输出:

ERROR:  null value in column "qty" violates not-null constraint
DETAIL:  Failing row contains (2, 1, null, 255).

我们可以观察到 NOT NULL 约束的行为符合预期。