1、ORACLE數(shù)據(jù)庫中的外鍵約束名都在表user_constraints中可以查到。其中constraint_type='R'表示是外鍵約束。
創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司,提供網(wǎng)站設(shè)計、成都網(wǎng)站制作,網(wǎng)頁設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
2、啟用外鍵約束的命令為:alter table table_name enable constraint constraint_name
3、禁用外鍵約束的命令為:alter table table_name disable constraint constraint_name
4、然后再用SQL查出數(shù)據(jù)庫中所以外鍵的約束名:
select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
oracle不知道跟mysql一樣不,命令行中操作mysql,直接用,
alter table Orders drop foreign key Id_P;
會有錯誤提示信息,提示信息里有系統(tǒng)提供的外鍵約束名字,
然后根據(jù)系統(tǒng)提供的外鍵約束名字來刪除就可以了。
1.查詢所有表的外鍵的:
select table_name, constraint_name from user_constraints where constraint_type = 'R';
2.禁用所有外鍵約束, 使用下面的sql生成對應(yīng)sql腳本:
select 'alter table ' || table_name || ' disable constraint ' || constraint_name || ';' from user_constraints where constraint_type = 'R';
生成的sql類似下面的語句:
alter table BERTH disable constraint BERTH_FK;
alter table BOLLARD disable constraint BOLLARD_FK;
alter table YARD_UNAVAIL_REGION disable constraint YARD_UNAVAIL_REGION_FK;
3.啟用所有外鍵約束, 使用下面的sql生成對應(yīng)sql腳本:
select 'alter table ' || table_name || ' enable constraint ' || constraint_name || ';' from user_constraints where constraint_type = 'R';
生成的sql類似下面的語句:
alter table BERTH enable constraint BERTH_FK;
alter table BOLLARD enable constraint BOLLARD_FK;
alter table YARD_UNAVAIL_REGION enable constraint YARD_UNAVAIL_REGION_FK;
4.刪除所有外鍵約束, 使用下面的sql生成對應(yīng)sql腳本:
select 'alter table ' || table_name || ' drop constraint ' || constraint_name || ';' from user_constraints where constraint_type = 'R';
生成的sql類似下面的語句:
alter table BERTH drop constraint BERTH_FK;
alter table BOLLARD drop constraint BOLLARD_FK;
alter table YARD_UNAVAIL_REGION drop constraint YARD_UNAVAIL_REGION_FK;
select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R';
祝賀樓主成功。
1樓說的怎么可能?只要刪除外鍵約束了,然后你就可以刪除這個表的數(shù)據(jù),不會影響到引用外鍵的表。
1、外鍵是屬于約束的一種,所謂約束顧名思義,就是限制你在數(shù)據(jù)庫的操作。而你對數(shù)據(jù)庫有什么操作,無非是增、刪、改、查,外鍵起的作用就是讓你在數(shù)據(jù)庫幫助的情況下更合理的增加數(shù)據(jù)的正確度。
2、所以,外鍵只是輔助,并不能起到你說的【B.NAME是否也自動出現(xiàn)張三兩個字】。
3、外鍵的作用是能夠避免如下情況。
如
【班級信息表】存放的是班級信息表。
【學(xué)生表】存放的是學(xué)生信息,包含班級信息。
這個時候 在【學(xué)生表】中存放的班級信息應(yīng)該在【班級信息表】存在才合法,自己人為控制的話難免有漏掉的情況,用外鍵則可以讓數(shù)據(jù)庫自動控制,當(dāng)插入【學(xué)生表】中的數(shù)據(jù)在【班級信息表】不存在的時候,數(shù)據(jù)庫不允許插入。
---
以上,希望對你有所幫助。
可用sql語句刪除外鍵約束,也可以用其他工具操作(如PL/SQL)。
一、語句刪除:
alter?table?表名?drop?constraint?外鍵名;
二、工具刪除:
1、登錄PL/SQL到指定數(shù)據(jù)庫。
2、左側(cè)找到Tables選項(xiàng)。
3、找到相應(yīng)的表,如emp,然后找到Foreign keys選項(xiàng)。
4、右鍵顯示出來的外鍵,點(diǎn)擊“刪掉”即可。