Oracle SQL細節總結之constraint約束
1)約束constraints:在表上強加的約束條件,以保證資料的完整性;防止關聯表的資料丟失;
常見的約束型別:
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGE KEY
- CHECK
在表建立時,指定約束條件,也可在建立表後,再新增修改;約束條件分為列級或者表級;
REATE TABLE [schema.]table
(column datatype [DEFAULT expr]
[column_constraint],
...
[table_constraint][,...]);
2)新增約束
ALTER TABLE table
ADD [CONSTRAINT constraint] type (column);
3)刪除約束
ALTER TABLE table_name DROP CONSTRAINT constraint_name
4)重名約束
alter table table_name rename constraint old_name to new_name
5)約束有效/無效
alter table table_name enable/disable constraint constraint_name;
約束延期是一個對主鍵、唯一鍵等約束進行延遲檢查的功能。可以使用該功能將約束檢查延遲到事務提交時,而不是在進行DDL操作之後立即進行檢查。所以對約束檢查也有這兩個選項:延遲和立即;
SQL> create table aaa
2 (
3 c1 number constraint aaa_pk primary key deferrable initially immediate,
4 c2 number constraint c2_ck check(c2>10) deferrable initially immediate
5 );
Table created.
SQL> set constraints c2_ck deferred;
Constraint set.
SQL> insert into aaa value (1,1);
insert into aaa value (1,1)
*
ERROR at line 1:
ORA-00928: missing SELECT keyword
SQL> insert into aaa values (1,1);
1 row created.
SQL> commit;
commit
*
ERROR at line 1:
ORA-02091: transaction rolled back
ORA-02290: check constraint (SCOTT.C2_CK) violated
提交時就會約束檢查,即延遲檢查;
6)檢視約束
user_constraints
user_cons_columns
常見的約束型別:
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGE KEY
- CHECK
在表建立時,指定約束條件,也可在建立表後,再新增修改;約束條件分為列級或者表級;
REATE TABLE [schema.]table
(column datatype [DEFAULT expr]
[column_constraint],
...
[table_constraint][,...]);
2)新增約束
ALTER TABLE table
ADD [CONSTRAINT constraint] type (column);
3)刪除約束
ALTER TABLE table_name DROP CONSTRAINT constraint_name
4)重名約束
alter table table_name rename constraint old_name to new_name
5)約束有效/無效
alter table table_name enable/disable constraint constraint_name;
約束延期是一個對主鍵、唯一鍵等約束進行延遲檢查的功能。可以使用該功能將約束檢查延遲到事務提交時,而不是在進行DDL操作之後立即進行檢查。所以對約束檢查也有這兩個選項:延遲和立即;
SQL> create table aaa
2 (
3 c1 number constraint aaa_pk primary key deferrable initially immediate,
4 c2 number constraint c2_ck check(c2>10) deferrable initially immediate
5 );
Table created.
SQL> set constraints c2_ck deferred;
Constraint set.
SQL> insert into aaa value (1,1);
insert into aaa value (1,1)
*
ERROR at line 1:
ORA-00928: missing SELECT keyword
SQL> insert into aaa values (1,1);
1 row created.
SQL> commit;
commit
*
ERROR at line 1:
ORA-02091: transaction rolled back
ORA-02290: check constraint (SCOTT.C2_CK) violated
提交時就會約束檢查,即延遲檢查;
6)檢視約束
user_constraints
user_cons_columns
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27009266/viewspace-743719/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle SQL細節總結(一)OracleSQL
- 約束CONSTRAINTAI
- constraint約束AI
- 10、Oracle中的約 束constraintOracleAI
- oracle外來鍵約束的總結Oracle
- MySQL——約束(constraint)詳解MySqlAI
- SQL之延遲約束SQL
- Oracle約束constraint的三個屬性應用OracleAI
- Oracle細節及難點總結Oracle
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- 細節總結
- Oracle約束Constraint對於CBO優化器的作用OracleAI優化
- oracle 約束(constraint)的幾個引數的小研究OracleAI
- SQL約束SQL
- Oracle總結【SQL細節、多表查詢、分組查詢、分頁】OracleSQL
- SQL之結束篇SQL
- Oracle資料庫中Constraint約束的四對屬性Oracle資料庫AI
- Oracle約束Oracle
- oracle 約束Oracle
- 爬蟲細節總結爬蟲
- sql: 查詢約束SQL
- Oracle定義約束 外來鍵約束Oracle
- oracle impdp的skip_constraint_errors選項跳過唯一約束錯誤OracleAIError
- 建約束(Constraint)時隱式建立索引(Index)及先建立索引後建立約束的區別AI索引Index
- oracle中的約束Oracle
- oracle 約束詳解Oracle
- Oracle約束簡介Oracle
- oracle鍵約束控制Oracle
- MySQL學習筆記之資料定義表約束,分頁方法總結MySql筆記
- SQL FOREIGN KEY 約束SQL
- Sql Server系列:鍵和約束SQLServer
- 看FCOS時的小細節總結
- oracle 註釋和約束Oracle
- 新增/刪除約束(Oracle)Oracle
- oracle的延遲約束Oracle
- 約束Constraint引起CBO執行計劃變化一例AI
- SQL Server唯一約束的使用SQLServer
- Oracle 11g系列:約束Oracle