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