【Oracle Database】数据库约束管理
admin
2023-04-18 09:06:25
0
主键约束
SQL> alter table customers add constraint customers_pk primary key (customer_id);  
Table altered.

col constraint_name for a30
col constraint_type for a15
col table_name for a30
col index_name for a30

SQL> select constraint_name,constraint_type,table_name,index_name,status from dba_constraints where constraint_type = 'P' and owner = 'SOE';
CONSTRAINT_NAME                CONSTRAINT_TYPE TABLE_NAME                     INDEX_NAME                     STATUS
------------------------------ --------------- ------------------------------ ------------------------------ --------
CUSTOMERS_PK                   P               CUSTOMERS                      CUSTOMERS_PK                   ENABLED

col constraint_name for a30
col constraint_type for a15
col table_name for a30
col column_name for a30

SQL> select dba_cons_columns.constraint_name,
dba_cons_columns.table_name,
dba_cons_columns.column_name,
dba_cons_columns.position
from dba_constraints join dba_cons_columns
on (dba_constraints.constraint_name = dba_cons_columns.constraint_name)
where constraint_type = 'P' and dba_constraints.owner = 'SOE';
CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME                      POSITION
------------------------------ ------------------------------ ------------------------------ ----------
CUSTOMERS_PK                   CUSTOMERS                      CUSTOMER_ID                             1

禁用约束
SQL> alter table customers disable constraint customers_pk;

启用约束
SQL> alter table customers enable constraint customers_pk;

删除约束
SQL> alter table customers drop constraint customers_pk;

外键约束
SQL> alter table orders add constraint orders_customer_id_fk foreign key (customer_id) references customers (customer_id);
Table altered.

col constraint_name for a30
col constraint_type for a20
col table_name for a20
col r_constraint_name for a30
col delete_rule for a15

SQL> select constraint_name,constraint_type,table_name,r_constraint_name,delete_rule,status from dba_constraints where constraint_type = 'R' and owner = 'SOE';
CONSTRAINT_NAME                CONSTRAINT_TYPE      TABLE_NAME           R_CONSTRAINT_NAME              DELETE_RULE     STATUS
------------------------------ -------------------- -------------------- ------------------------------ --------------- --------
ORDERS_CUSTOMER_ID_FK          R                    ORDERS               CUSTOMERS_PK                   NO ACTION       ENABLED

col child_table_name for a20
col father_table_name for a20
col child_column_name for a20
col father_column_name for a20

SQL> select dba_cons_columns.constraint_name,
dba_cons_columns.table_name as child_table_name,
dba_cons_columns.column_name as child_column_name,
dba_cons_columns.position,
dba_indexes.table_name as father_table_name,
dba_ind_columns.column_name as father_column_name
from
dba_constraints join dba_cons_columns on (dba_constraints.constraint_name = dba_cons_columns.constraint_name)
join dba_indexes on (dba_constraints.r_constraint_name = dba_indexes.index_name)
join dba_ind_columns on (dba_indexes.index_name = dba_ind_columns.index_name) where constraint_type ='R' and dba_constraints.owner = 'SOE';
CONSTRAINT_NAME                CHILD_TABLE_NAME     CHILD_COLUMN_NAME      POSITION FATHER_TABLE_NAME    FATHER_COLUMN_NAME
------------------------------ -------------------- -------------------- ---------- -------------------- --------------------
ORDERS_CUSTOMER_ID_FK          ORDERS               CUSTOMER_ID                   1 CUSTOMERS            CUSTOMER_ID

1、普通外键约束(如果存在子表引用父表主键,则无法删除父表记录)
SQL> alter table orders add constraint orders_customer_id_fk foreign key (customer_id) references customers (customer_id);
2、级联外键约束(可删除存在引用的父表记录,而且同时把所有有引用的子表记录也删除)
SQL> alter table orders add constraint orders_customer_id_fk foreign key (customer_id) references customers (customer_id) on delete cascade;
3、置空外键约束(可删除存在引用的父表记录,同时将子表中引用该父表主键的外键字段自动设为NULL,但该字段应允许空值)
SQL> alter table orders add constraint orders_customer_id_fk foreign key (customer_id) references customers (customer_id) on delete set null;


相关内容

热门资讯

扎哈罗娃批小泉进次郎涉核言论:... 【环球网报道 记者 张江平】综合俄新社等媒体报道,对于日本防卫大臣小泉进次郎涉核言论,俄罗斯外交部发...
“特高课”再现?日本强推“国家... 无视反对战争正义呼声 复刻战前军国主义体制日本强推“国家情报局”引发广泛担忧和批评(国际视点)本报记...
6G相比5G不只是速度更快 将...   6G相比5G不只是速度更快  【6G相比5G不只是速度更快】7月28日,相比5G,6G不仅是速度...
趣享夏日消保同行 泰康人寿深圳...   7月12日,为落实2026年“7·8全国保险公众宣传日”工作部署,泰康人寿深圳分公司结合三十周年...
泰康人寿深圳分公司联合泰康养老...   为深入践行金融工作的政治性、人民性,切实守护新就业群体的财产安全,7月23日下午,在深圳市居民金...
中牟改善买房必看:三代宅和四代... 准备在中牟买改善房的人,十有八九会纠结同一个问题:到底是买传统的第三代住宅,还是紧跟郑州置业主流买第...
徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...