oracle10g系統管理之約束管理

2021-08-24 18:39:39 字數 1658 閱讀 7060

1.

約束分類:

1)not null

:確保列不能為

null

。如果列上定義了

not null

約束,插入資料時,必須為該列提供資料。

2)unique

約束用於唯一標識列的資料。當定義了唯一約束後,唯一約束列的列支不能重複,但允許列為

null

。當在表的某一列上定義了唯一約束後,預設情況下

oracle

會自動基於唯一約束列建立唯一索引,並且索引名與約束名完全一致。

3)primary key

:主鍵約束

4)foreign key

:外來鍵約束,定義了主從表之間的關係。外來鍵約束要定義在重表上,但主表必須具有主鍵約束或唯一約束。定義了外來鍵約束後,要求外部健列的資料必須在主表的主鍵列中存在,或者為

null。5)

check

:check

約束用於強制錶行資料必須滿足的條件。

2.約束的狀態

1)enable validate

(預設狀態)當將約束轉變為

enable validate

狀態時,要求新舊資料必須同時滿足約束規則。假定在

name

列上定義了唯一約束,那麼將約束轉變為

enable validate

狀態時,

name

列上不能有重複值。

如果在定義和增加約束時不指定約束狀態,則約束的預設狀態為

enable validate

狀態。2)

enable novalidate

當約束轉為此狀態時,已存在資料可以不滿足該約束,新增資料必須滿足此約束規則。

3)disable validate

此狀態不允許在表上執行任何

dml操作。對於主鍵和唯一約束來說,會刪除相應的唯一索引,但約束規則仍然有效。

該狀態主要用於分割槽表和非分割槽表之間使用

alter table …exchange paratition

命令進行資料交換。

4)disable novalidate

對於主鍵和唯一約束來說,為刪除相應的唯一索引,約束規則失效。

3.使用延期約束檢查

預設情況下,當執行

dml操作時,如果鍵入了違反約束規則的資料,則會立即提示錯誤資訊。但是在某些情況下,我們可能會希望在事務結束以後進行約束檢查。如果要用此功能,我們必須在定義約束時,指定

deferrable

選項。示例如下:

deptno number(4) constraint s_emp_fk references s_dept(deptno) deferrable;

4.顯示約束資訊

select constraint_name, constraint_type,status,validate

from dba_constraints

where owner=

『scott

』and table_name=

『employee

』;顯示約束列:

select column_name from

dba_cons_columns where owner=』』scott』 and constraints_name=』check_job』;

Oracle10g系統管理2

13.資料庫物理結構 資料庫檔案 資料檔案datafile 重做日誌logfile 控制檔案controlfile 資料檔案的位置及大小,重做日誌檔案的位置及大小,資料庫名稱及建立時間,日誌序列號 歸檔日誌archive log file 引數檔案pfile,spfile,init.ora,spfi...

Oracle10g系統管理4

30.建立資料庫步驟 建立例程服務 建立引數檔案 以nomount方式啟動例程 建立資料庫 執行指令碼完成後續操作 31.建立資料庫指令碼 create database demo maxinstances 8 maxloghistory 1 maxlogfiles 16 maxlogmembers...

Oracle10g系統管理6

39.控制檔案用於記錄和維護資料庫的物理結構。當啟動例程並開啟資料庫時,oracle會根據初始化引數control files在例程和資料庫之間建立關聯。裝載資料庫 mount狀態 時,oracle會按照初始化引數control files定位並開啟控制檔案。開啟資料庫時,oracle會根據控制檔案...