Oracle Check約束用法詳解

2021-09-18 08:07:57 字數 4136 閱讀 1582

oracle check約束用法詳解目標

例項講解在oracle中如何使用check約束(建立、啟用、禁用和刪除)

什麼是check約束?

check約束指在表的列中增加額外的限制條件。

注:check約束不能在view中定義。

check約束只能定義的列必須包含在所指定的表中。

check約束不能包含子查詢。

建立表時定義check約束

3.1 語法:

[sql] view plain copy

create table table_name

(column1 datatype null/not null,

column2 datatype null/not null,

…constraint constraint_name check (column_name condition) [disable]

);其中,disable關鍵之是可選項。如果使用了disable關鍵字,當check約束被建立後,check約束的限制條件不會生效。

3.2 示例1:數值範圍驗證

[sql] view plain copy

create table tb_supplier

(supplier_id number,

supplier_name varchar2(50),

contact_name varchar2(60),

/定義check約束,該約束在字段supplier_id被插入或者更新時驗證,當條件不滿足時觸發。/

constraint check_tb_supplier_id check (supplier_id between 100 and 9999)

);驗證:

在表中插入supplier_id滿足條件和不滿足條件兩種情況:

[sql] view plain copy

–supplier_id滿足check約束條件,此條記錄能夠成功插入

insert into tb_supplier values(200, 『dlt』,『stk』);

[sql] view plain copy

error report -

sql error: ora-02290: check constraint (502351838.check_tb_supplier_id) violated

02290. 00000 - 「check constraint (%s.%s) violated」

*cause: the values being inserted do not satisfy the named check

3.3 示例2:強制插入列的字母為大寫

[sql] view plain copy

create table tb_products

(product_id number not null,

product_name varchar2(100) not null,

supplier_id number not null,

/定義check約束check_tb_products,用途是限制插入的產品名稱必須為大寫字母/

constraint check_tb_products

check (product_name = upper(product_name))

);驗證:

在表中插入product_name滿足條件和不滿足條件兩種情況:

[sql] view plain copy

sql error: ora-02290: check constraint (502351838.check_tb_products) violated

02290. 00000 - 「check constraint (%s.%s) violated」

*cause: the values being inserted do not satisfy the named check

4. alter table定義check約束

4.1 語法

[sql] view plain copy

alter table table_name

add constraint constraint_name check (column_name condition) [disable];

其中,disable關鍵之是可選項。如果使用了disable關鍵字,當check約束被建立後,check約束的限制條件不會生效。

4.2 示例準備

[sql] view plain copy

drop table tb_supplier;

–建立例項表

create table tb_supplier

(supplier_id number,

supplier_name varchar2(50),

contact_name varchar2(60)

);4.3 建立check約束

[sql] view plain copy

–建立check約束

alter table tb_supplier

add constraint check_tb_supplier

check (supplier_name in (『ibm』,『lenovo』,『microsoft』));

4.4 驗證

[sql] view plain copy

–supplier_name滿足check約束條件,此條記錄能夠成功插入

insert into tb_supplier values(1, 『ibm』,『us』);

啟用check約束

5.1 語法

[sql] view plain copy

alter table table_name

enable constraint constraint_name;

5.2 示例

[sql] view plain copy

drop table tb_supplier;

–重建表和check約束

create table tb_supplier

(supplier_id number,

supplier_name varchar2(50),

contact_name varchar2(60),

/定義check約束,該約束盡在啟用後生效/

constraint check_tb_supplier_id check (supplier_id between 100 and 9999) disable

);–啟用約束

alter table tb_supplier enable constraint check_tb_supplier_id;

6. 禁用check約束

6.1 語法

[sql] view plain copy

alter table table_name

disable constraint constraint_name;

6.2 示例

[sql] view plain copy

–禁用約束

alter table tb_supplier disable constraint check_tb_supplier_id;

約束詳細資訊檢視

select

constraint_name,–約束名稱

constraint_type,–約束型別

table_name,–約束所在的表

search_condition,–約束表示式

status–是否啟用

from user_constraints–[all_constraints|dba_constraints]

where constraint_name=『check_tb_supplier_id』;

刪除check約束

8.1 語法

[sql] view plain copy

alter table table_name

drop constraint constraint_name;

8.2 示例

[sql] view plain copy

alter table tb_supplier

drop constraint check_tb_supplier_id;

**:

SQL CHECK約束的用法

sql check檢查約束例項 教程 條件檢查被輸入的值。如果條件計算為false,記錄中的列的值違反了約束,從而不能寫入到表中。check約束,條件檢查被輸入的值。如果條件計算為false,記錄中的列的值違反了約束,從而不能寫入到表中。例如,下面的sql語句建立乙個新的表名為customers,並...

MySQL 檢視約束,增添約束,刪除約束

mysql 檢視約束,新增約束,刪除約束 檢視表的字段資訊 desc 表名 檢視表的所有資訊 show create table 表名 新增主鍵約束 alter table 表名 add constraint 主鍵 形如 pk 表名 primary key 表名 主鍵字段 新增外來鍵約束 alter...

XML約束 DTD約束

xml語法 規範的 xml檔案的基本編寫規則。有 w3c組織制定的 xml約束 規範 xml檔案資料內容格式的編寫規則。由開發者自定義 dtd約束 語法相對簡單,功能相對簡單,學習成本相對低 schema約束 語法相對複雜,功能相對複雜,學習成本相對高 命名空間 1 匯入dtd方式 a 內部匯入 x...