一个表某列可以设置默认值。首先创建无默认值表。默认值也是一种约束。
CREATE TABLE products (productsid INT ,productsname VARCHAR(20),productsprice NUMERIC);
---设置productsprice默认值0.01
ALTER TABLE "public".products ALTER COLUMN productsprice SET DEFAULT 0.01;
---删除productsprice默认值0.01
ALTER TABLE products ALTER COLUMN productsprice DROP DEFAULT;
也可以新建表时同时设置默认值。
---创建表products
---设置列productsprice 默认值1.00
CREATE TABLE products (productsid INT ,productsname VARCHAR(20),productsprice NUMERIC DEFAULT 1.00);
下面介绍给约束命名,约束命名后可以让错误信息更加清晰明了,同时也可以引用。
---约束命名为checkprice
CREATE TABLE products (
productsno INTEGER ,
productsname TEXT ,
price NUMERIC CONSTRAINT checkprice CHECK (price >0)
);
约束还可以引用其他列。
---引用discountprice列
CREATE TABLE products (
productsno INTEGER ,
productsname TEXT ,
price NUMERIC CONSTRAINT checkprice CHECK (price >0), ---普通价格
discountprice NUMERIC CHECK (discountprice >0), ---折扣价格
CHECK (price >discountprice)
);
当然我们还可以让代码显示更加清晰,这个可以根据个人习惯选择。
CREATE TABLE products (
productno INTEGER,
name TEXT,
price NUMERIC,
discountedprice NUMERIC,
CHECK (price > 0),
CHECK (discountedprice > 0),
CHECK (price > discountedprice)
);
---另一种等价写法,根据个人习惯等选择
CREATE TABLE products (
productno INTEGER,
name TEXT,
price NUMERIC,
discountedprice NUMERIC,
CHECK (price > 0),
CHECK (discountedprice > 0 AND price > discountedprice)
);
单个列约束称为列约束,涉及到其他列关联约束称为表约束。