约束

ProtonBase支持多种数据完整性约束,用于确保表中数据的准确性和可靠性。约束是应用于表列的限制规则,用于限制可以存储在表中的数据类型。

约束类型

ProtonBase支持以下约束类型:

NOT NULL 约束

确保列不能存储NULL值。

CREATE TABLE employees (
 id SERIAL PRIMARY KEY,
 name VARCHAR(100) NOT NULL,
 email VARCHAR(100) NOT NULL
);

UNIQUE 约束

确保列中的所有值都是不同的。

CREATE TABLE users (
 id SERIAL PRIMARY KEY,
 username VARCHAR(50) UNIQUE,
 email VARCHAR(100) UNIQUE
);

PRIMARY KEY 约束

唯一标识表中的每一行,是NOT NULL和UNIQUE的组合。

CREATE TABLE products (
 product_id INT PRIMARY KEY,
 product_name VARCHAR(100) NOT NULL
);

FOREIGN KEY 约束

确保一个表中的数据匹配另一个表中的值的参照完整性。

CREATE TABLE orders (
 order_id SERIAL PRIMARY KEY,
 product_id INT REFERENCES products(product_id),
 quantity INT NOT NULL
);

CHECK 约束

确保列中的值满足特定条件。

CREATE TABLE employees (
 id SERIAL PRIMARY KEY,
 name VARCHAR(100) NOT NULL,
 salary DECIMAL(10,2) CHECK (salary > 0)
);

DEFAULT 约束

当没有指定值时,为列提供默认值。

CREATE TABLE orders (
 order_id SERIAL PRIMARY KEY,
 order_date DATE DEFAULT CURRENT_DATE,
 status VARCHAR(20) DEFAULT 'pending'
);

约束操作

添加约束

可以在创建表时添加约束,也可以在已有表上添加约束。

创建表时添加约束:

CREATE TABLE customers (
 customer_id INT PRIMARY KEY,
 customer_name VARCHAR(100) NOT NULL,
 email VARCHAR(100) UNIQUE,
 age INT CHECK (age >= 18)
);

在已有表上添加约束:

ALTER TABLE employees
ADD CONSTRAINT salary_check CHECK (salary > 0);

删除约束

ALTER TABLE employees
DROP CONSTRAINT salary_check;