oracle怎么激活外鍵,oracle增加外鍵

oracle怎么創建外鍵?

create TABLE zhao(\x0d\x0a id number primary key,\x0d\x0a mingcheng nvarchar2(50),\x0d\x0a neirong nvarchar2(50),\x0d\x0a jiezhiriqi date,\x0d\x0a zhuangtai nvarchar2(50)\x0d\x0a);\x0d\x0acreate TABLE tou(\x0d\x0a id number primary key,\x0d\x0a zhao_id number,\x0d\x0a toubiaoqiye nvarchar2(50),\x0d\x0a biaoshuneirong nvarchar2(50),\x0d\x0a toubiaoriqi date,\x0d\x0a baojia number,\x0d\x0a zhuangtai nvarchar2(50),\x0d\x0a foreign KEY(zhao_id) REFERENCES zhao(id)\x0d\x0a);\x0d\x0aforeign key (zhao_id) references to zhao(id)\x0d\x0a多了個to

在江山等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供做網站、成都網站制作 網站設計制作按需定制網站,公司網站建設,企業網站建設,成都品牌網站建設,成都全網營銷,成都外貿網站建設公司,江山網站建設費用合理。

oracle中 怎么設主外鍵?

以oracle自帶的用戶scott為例。

create?table?dept(

deptno?number(2)?primary?key,?--deptno?為?dept表的主鍵

dname?varchar2(10),

loc?varchar2(9)

);

create?table?emp(

empno?number(4)?primary?key,?--empno?為?emp表的主鍵

ename?varchar2(10),

job?varchar2(9),

mgr?number(4),

hiredate?date,

sal?number(7,2),

comm?number(7,2),

deptno?number(2)?references?dept(deptno)?--dept表中deptno字段?為?emp表的外鍵

);

oracle的外鍵怎么使用?

1、外鍵是屬于約束的一種,所謂約束顧名思義,就是限制你在數據庫的操作。而你對數據庫有什么操作,無非是增、刪、改、查,外鍵起的作用就是讓你在數據庫幫助的情況下更合理的增加數據的正確度。

2、所以,外鍵只是輔助,并不能起到你說的【B.NAME是否也自動出現張三兩個字】。

3、外鍵的作用是能夠避免如下情況。

【班級信息表】存放的是班級信息表。

【學生表】存放的是學生信息,包含班級信息。

這個時候 在【學生表】中存放的班級信息應該在【班級信息表】存在才合法,自己人為控制的話難免有漏掉的情況,用外鍵則可以讓數據庫自動控制,當插入【學生表】中的數據在【班級信息表】不存在的時候,數據庫不允許插入。

---

以上,希望對你有所幫助。

oracle創建外鍵

create TABLE zhao(

id number primary key,

mingcheng nvarchar2(50),

neirong nvarchar2(50),

jiezhiriqi date,

zhuangtai nvarchar2(50)

);

create TABLE tou(

id number primary key,

zhao_id number,

toubiaoqiye nvarchar2(50),

biaoshuneirong nvarchar2(50),

toubiaoriqi date,

baojia number,

zhuangtai nvarchar2(50),

foreign KEY(zhao_id) REFERENCES zhao(id)

);

foreign key (zhao_id) references to zhao(id)

多了個to

oracle 創建外鍵

oracle創建外鍵約束有兩種方法:

1、創建表時直接創建外鍵約束

create?table?books(

bookid?number(10)?not?null?primary?key,

bookName?varchar2(20)?not?null,

price?number(10,2),

categoryId?number(10)?not?null?references?Category(id)??--外鍵約束

);

2、先創建表,表創建成功后,單獨添加外鍵約束

create?table?books(

bookid?number(10)?not?null?primary?key,

bookName?varchar2(20)?not?null,

price?number(10,2),

categoryId?number(10)?not?null

);

ALTER?TABLE??books?ADD?CONSTRAINT?FK_Book_categoryid?FOREIGN?KEY(categoryId?)?REFERENCES?Category(id);

如何啟用和禁用oracle&DB2數據庫外鍵約束

特總結了Oracle和DB2數據庫下如何禁用外鍵約束的方法。

一、Oracle數據庫:

禁用約束基本語法:

alter table 數據庫表名 disable constraint 約束名

假設現在需要關閉pub_organ的外鍵約束:

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

select * from user_constraints where table_name='PUB_ORGAN';

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

OWNER: 表的所有者

CONSTRAINT_NAME: 約束名稱

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

TABLE_NAME: 表名稱

SEARCH_CONDITION: check約束的具體信息

STATUS: ENABLED表示當前約束是啟用的,DISABLED表示當前約束未啟用。

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

如禁用pub_organ表的外鍵PUBORGAN_FK1,則可以使用如下命令實現:

alter table PUB_ORGAN disable constraint PUBORGAN_FK1;

執行后,再次查詢字典表user_constraints,如下:

此時往數據庫表pub_organ中插入數據時就不再受外鍵約束的影響了。

啟用約束基本語法:

alter table 數據庫表名 enable constraint 約束名

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

alter table PUB_ORGAN enable constraint PUBORGAN_FK1;

二、DB2數據庫:

禁用約束基本語法:

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

啟用約束基本語法:

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

相關字典表:SYSIBM.SYSTABCONST

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

各字段含義如下:

NAME: 約束名稱

DEFINER: 定義者

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

TBNAME: 表名稱

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

三、封裝成java接口、批量執行

在實際工作中,經常會將若干個表,或者所有數據庫表的外鍵一起禁用,此時需要批量執行相關命令,筆者根據工作實際,使用java封裝了相關接口,以方便使用。

對外暴露接口如下:

/*

* 啟用當前用戶指定tableName的所有外鍵約束

* 入參使用可變參數(jdk5新特性)

* 調用方式:

* 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);

}

/*

* 禁用當前用戶指定tableName的所有外鍵約束

*/

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

disableORenbaleFK(false,tableNames);

}

/*

* 啟用當前用戶所有表的外鍵約束

*/

public static void enableAllFK(){

disableORenableAllConstraint(true);

}

/*

* 禁用當前用戶所有表的外鍵約束

*/

public static void disableAllFK(){

disableORenableAllConstraint(false);

}

其中核心處理代碼如下:

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

throw new RuntimeException("入參tableNames不能為空!");

}

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

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("數據庫類型無效(僅支持Oracle和DB2),dbType="+dbType);

}

StringBuffer generateSQL = new StringBuffer(sql);

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

generateSQL.append(" '");

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

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怎么激活外鍵,oracle增加外鍵
瀏覽路徑:http://m.kartarina.com/article6/hddiig.html

成都網站建設公司_創新互聯,為您提供用戶體驗網站排名網站建設移動網站建設全網營銷推廣網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
主站蜘蛛池模板: 国产成人无码av在线播放不卡| 无码AV岛国片在线播放| 人妻少妇看A偷人无码精品| 国产精品亚洲专区无码牛牛| 亚洲av无码专区亚洲av不卡| 中文字幕av无码专区第一页| 无码专区人妻系列日韩精品少妇| 亚洲Av无码乱码在线znlu| 亚洲AV日韩AV永久无码免下载| 国产精品亚洲一区二区无码| 精品无码av一区二区三区| 无码人妻精品一区二区三区99不卡| 日日麻批免费40分钟无码| 亚洲精品97久久中文字幕无码| 无码成人精品区在线观看| 国产在线无码不卡影视影院| 亚欧无码精品无码有性视频| 亚洲人片在线观看天堂无码 | 久久天堂av综合色无码专区| 亚洲va无码va在线va天堂| 亚洲精品一级无码鲁丝片| 亚洲AV日韩AV永久无码色欲| 亚洲AV成人噜噜无码网站| 亚洲AV区无码字幕中文色| 亚洲一区无码中文字幕| 日韩精品无码一区二区三区AV| 人妻少妇看A偷人无码精品| 中文字幕人成无码免费视频| 日韩国产成人无码av毛片| 亚洲欧洲日产国码无码久久99| 成年免费a级毛片免费看无码| 午夜无码中文字幕在线播放| 国产AV无码专区亚洲AV麻豆丫| 亚洲精品无码永久在线观看男男| 久久亚洲精品无码AV红樱桃| AV无码免费永久在线观看| 亚洲国产av高清无码| 无码高潮爽到爆的喷水视频app| 亚洲av成本人无码网站| 色综合色国产热无码一| 亚洲精品一级无码鲁丝片|