一個表某列能夠設置默認值。首先建立無默認值表。默認值也是一種約束。code
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) );
約束還能夠引用其餘列。di
---引用discountprice列 CREATE TABLE products ( productsno INTEGER , productsname TEXT , price NUMERIC CONSTRAINT checkprice CHECK (price >0), ---普通價格 discountprice NUMERIC CHECK (discountprice >0), ---折扣價格 CHECK (price >discountprice) );
固然咱們還可讓代碼顯示更加清晰,這個能夠根據我的習慣選擇。co
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) );
單個列約束稱爲列約束,涉及到其餘列關聯約束稱爲表約束。習慣