PostgreSQL的約束

來源:互聯網
上載者:User

標籤:table   ble   name   height   oracle   sql   person   integer   gre   

約束類型:檢查約束、非空約束、唯一約束、主鍵、外鍵

1.  檢查約束

設定某個欄位裡的數值必須滿足約束運算式的條件。

例:限制人的年齡在0~120之間,語句如下:

create table person(namevarchar(40),age int check (age >=0 and age<=120));

insert into  person values(‘name1‘,120);

insert into  person values(‘name1‘,121);

執行結果如下,年齡欄位超過120報錯,提示受“person_age_check”的限制。

指定約束的名稱,需要使用關鍵詞“constraint”,樣本如下

create table person(namevarchar(40),age int constraint age_chk check(age >=0 and age<=120));

一個檢查約束可以引用多個列,例如:儲存商品平常價格和打折價格,而打折價格低於平常價格,樣本如下

create table products (

   product_no integer,

   name text,

   price numeric check (price > 0),

   dazhe_price numeric check (dazhe_price > 0),

   constraint dazhe_price_chk check (price >dazhe_price)

);

在上面的例子中,針對價格(price > 0)和打折後價格(dazhe_price > 0)的約束稱為列約束,這兩個約束依附於特定的列,但第三個約束(price >dazhe_price)獨立於任何一個列定義,稱為資料表條件約束。

執行結果如下:

註:oracle下,檢查約束可以禁用,但在PostgreSQL下卻不可以禁用。

2.  非空約束

非空約束僅僅指定一個列中不會有空值。非空約束等價於檢查約束(column_name is not null)。樣本如下:

create table products (

   product_no integer,

   name text,

   price numeric not null,

   dazhe_price numeric check (dazhe_price > 0),

   constraint dazhe_price_chk check (price >dazhe_price)

);

3.  唯一約束

唯一約束保證在一列或一組列中儲存的資料是唯一值,樣本如下:

create table products (

   product_no integer UNIQUE,

   name text,

   price numeric

);

為一組列定義一個唯一約束,樣本如下:

create table products (

   product_no integer,

   name text,

   price numeric,

   UNIQUE(product_no, price)

);

為唯一約束指定名稱:

create table products (

   product_no integer CONSTRAINT pro_no_uniqueUNIQUE,

   name text,

   price numeric

);

PostgreSQL的約束

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.