约束
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;