中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

oracle怎么禁用外鍵,oracle添加外鍵語(yǔ)句

oracle刪除外鍵字段,擦查詢問(wèn)題

1.查詢所有表的外鍵的:

丘北網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

select table_name, constraint_name from user_constraints where constraint_type = 'R';

2.禁用所有外鍵約束, 使用下面的sql生成對(duì)應(yīng)sql腳本:

select 'alter table ' || table_name || ' disable constraint ' || constraint_name || ';' from user_constraints where constraint_type = 'R';

生成的sql類似下面的語(yǔ)句:

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生成對(duì)應(yīng)sql腳本:

select 'alter table ' || table_name || ' enable constraint ' || constraint_name || ';' from user_constraints where constraint_type = 'R';

生成的sql類似下面的語(yǔ)句:

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生成對(duì)應(yīng)sql腳本:

select 'alter table ' || table_name || ' drop constraint ' || constraint_name || ';' from user_constraints where constraint_type = 'R';

生成的sql類似下面的語(yǔ)句:

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;

Oracle中禁用了外鍵約束對(duì)系統(tǒng)有沒(méi)有影響

禁用了外鍵約束,那么你的數(shù)據(jù)可能就不符合 此處外鍵約定的規(guī)則。

對(duì)你的數(shù)據(jù)的邏輯肯定有影響,對(duì)你的應(yīng)用程序可能產(chǎn)生影響。

至于Oracle系統(tǒng)本身,則沒(méi)有什么影響

如何啟用和禁用oracle&DB2數(shù)據(jù)庫(kù)外鍵約束

特總結(jié)了Oracle和DB2數(shù)據(jù)庫(kù)下如何禁用外鍵約束的方法。

一、Oracle數(shù)據(jù)庫(kù):

禁用約束基本語(yǔ)法:

alter table 數(shù)據(jù)庫(kù)表名 disable constraint 約束名

假設(shè)現(xiàn)在需要關(guān)閉pub_organ的外鍵約束:

1、 首先查詢pub_organ存在哪些外鍵約束,此時(shí)需要用到oracle的字典表user_constraints。

select * from user_constraints where table_name='PUB_ORGAN';

上圖就是查詢結(jié)果,其中各字段含義如下:

OWNER: 表的所有者

CONSTRAINT_NAME: 約束名稱

CONSTRAINT_TYPE: 約束類型(R代表外鍵,P代表主鍵,C代表check約束)

TABLE_NAME: 表名稱

SEARCH_CONDITION: check約束的具體信息

STATUS: ENABLED表示當(dāng)前約束是啟用的,DISABLED表示當(dāng)前約束未啟用。

2、 查詢出表存在哪些約束后,即可以通過(guò)alter語(yǔ)句啟用或禁用指定的約束了。

如禁用pub_organ表的外鍵PUBORGAN_FK1,則可以使用如下命令實(shí)現(xiàn):

alter table PUB_ORGAN disable constraint PUBORGAN_FK1;

執(zhí)行后,再次查詢字典表user_constraints,如下:

此時(shí)往數(shù)據(jù)庫(kù)表pub_organ中插入數(shù)據(jù)時(shí)就不再受外鍵約束的影響了。

啟用約束基本語(yǔ)法:

alter table 數(shù)據(jù)庫(kù)表名 enable constraint 約束名

如現(xiàn)在需要重新啟用pub_organ的外鍵約束,可以使用如下命令:

alter table PUB_ORGAN enable constraint PUBORGAN_FK1;

二、DB2數(shù)據(jù)庫(kù):

禁用約束基本語(yǔ)法:

ALTER TABLE 表名稱 ALTER FOREIGN KEY 約束名稱 NOT ENFORCED

啟用約束基本語(yǔ)法:

ALTER TABLE 表名稱 ALTER FOREIGN KEY 約束名稱 ENFORCED

相關(guān)字典表:SYSIBM.SYSTABCONST

如:select * from SYSIBM.SYSTABCONST where tbname='PUB_ORGAN';

各字段含義如下:

NAME: 約束名稱

DEFINER: 定義者

CONSTRAINTTYP: 約束類型(P代表主鍵,F(xiàn)代表外鍵)

TBNAME: 表名稱

ENFORCED: 是否啟用(Y代表啟用,N代表未啟用)

三、封裝成java接口、批量執(zhí)行

在實(shí)際工作中,經(jīng)常會(huì)將若干個(gè)表,或者所有數(shù)據(jù)庫(kù)表的外鍵一起禁用,此時(shí)需要批量執(zhí)行相關(guān)命令,筆者根據(jù)工作實(shí)際,使用java封裝了相關(guān)接口,以方便使用。

對(duì)外暴露接口如下:

/*

* 啟用當(dāng)前用戶指定tableName的所有外鍵約束

* 入?yún)⑹褂每勺儏?shù)(jdk5新特性)

* 調(diào)用方式:

* 1、enableFK("pub_organ")

* 2、enableFK("pub_organ","pub_stru")

* 3、enableFK(new String[]{"pub_organ","pub_stru"})

*/

public static void enableFK(String...tableNames){

disableORenbaleFK(true,tableNames);

}

/*

* 禁用當(dāng)前用戶指定tableName的所有外鍵約束

*/

public static void disableFK(String...tableNames){

disableORenbaleFK(false,tableNames);

}

/*

* 啟用當(dāng)前用戶所有表的外鍵約束

*/

public static void enableAllFK(){

disableORenableAllConstraint(true);

}

/*

* 禁用當(dāng)前用戶所有表的外鍵約束

*/

public static void disableAllFK(){

disableORenableAllConstraint(false);

}

其中核心處理代碼如下:

if(tableNames==null||tableNames.length==0){

throw new RuntimeException("入?yún)ableNames不能為空!");

}

//查詢指定表的外鍵約束

String sql = null;

String dbType = getDBType();

if(dbType.contains("ORACLE")){

sql = "select 'alter table ' || table_name || ' disable constraint ' || constraint_name from user_constraints where constraint_type='R' and TABLE_NAME in(";

if(isEnable){

sql = sql.replace("disable", "enable");

}

}else if(dbType.contains("DB2")){

sql = "select 'ALTER TABLE ' || TBNAME || ' ALTER FOREIGN KEY ' || NAME ||' NOT ENFORCED ' FROM SYSIBM.SYSTABCONST WHERE CONSTRAINTYP='F' and TBNAME in(";

if(isEnable){

sql = sql.replace("NOT ENFORCED", "ENFORCED");

}

}else{

throw new RuntimeException("數(shù)據(jù)庫(kù)類型無(wú)效(僅支持Oracle和DB2),dbType="+dbType);

}

StringBuffer generateSQL = new StringBuffer(sql);

for(int i=0;itableNames.length;i++){

generateSQL.append(" '");

generateSQL.append(tableNames[i].toUpperCase());//注意須轉(zhuǎn)換成大寫

generateSQL.append("',");

}

generateSQL.deleteCharAt(generateSQL.length()-1);

generateSQL.append(")");

ListMapString, Object dataSet = DBTool.executeQuery(generateSQL.toString());

//啟用or停止查詢出的外鍵約束

for(int i=0;idataSet.size();i++){

MapString, Object record = dataSet.get(i);

IteratorEntryString, Object itor = record.entrySet().iterator();

while(itor.hasNext())

{

EntryString, Object e = itor.next();

DBTool.executeUpdate(e.getValue().toString(),UpdateType.ALTER);

}

}

ORACLE語(yǔ)句怎么刪除外鍵約束,只是刪約束,不是刪表

可用sql語(yǔ)句刪除外鍵約束,也可以用其他工具操作(如PL/SQL)。

一、語(yǔ)句刪除:

alter?table?表名?drop?constraint?外鍵名;

二、工具刪除:

1、登錄PL/SQL到指定數(shù)據(jù)庫(kù)。

2、左側(cè)找到Tables選項(xiàng)。

3、找到相應(yīng)的表,如emp,然后找到Foreign keys選項(xiàng)。

4、右鍵顯示出來(lái)的外鍵,點(diǎn)擊“刪掉”即可。

網(wǎng)頁(yè)題目:oracle怎么禁用外鍵,oracle添加外鍵語(yǔ)句
網(wǎng)頁(yè)地址:http://m.2m8n56k.cn/article12/hcesdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、外貿(mào)網(wǎng)站建設(shè)全網(wǎng)營(yíng)銷推廣、動(dòng)態(tài)網(wǎng)站、外貿(mào)建站響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
主站蜘蛛池模板: 精品一区二区三区免费爱 | 久久小视频| 高清国产美女一级a毛片录 高清国产亚洲va精品 | 久久国产精品久久久久久久久久 | 亚洲乱人伦精品图片 | 91色老99久久九九爱精品 | 欧美三级一区 | 狠狠色狠狠色综合久久一 | 青娱乐色 | 欧美日韩高清不卡一区二区三区 | 男女交性拍拍拍高清视频 | 国产极品一区 | 亚洲国产最新 | 高h原耽肉汁动漫视频 | 欧美一级色 | 成人性视频免费网站 | 99久久精品6在线播放 | 91精品一区二区三区在线播放 | 国内精品自产拍在线观看91 | 2019天天操天天干天天透 | 亚洲一级毛片 | 成年性午夜免费视频网站不卡 | 国产免费福利体检区久久 | 色偷偷亚洲精品一区 | 亚洲视频区 | 久久综合一区二区三区 | 三级精品在线观看 | 夜夜操夜夜爽 | 特级做a爰片毛片免费看一区 | 91香蕉国产观看免费人人 | 欧美2区| aaa欧美| 另类综合视频 | 久久国产精品自线拍免费 | 无限观看社区在线视频 | 精品国产高清久久久久久小说 | freesex寂寞老妇hd | 国产毛片一级 | 国产欧美精品一区二区 | 国产国语在线播放视频 | 成人亚洲欧美日韩在线 |