欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

oracle怎么創(chuàng)建外鍵?

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多了個(gè)to

在江山等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷,成都外貿(mào)網(wǎng)站建設(shè)公司,江山網(wǎng)站建設(shè)費(fèi)用合理。

oracle中 怎么設(shè)主外鍵?

以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、外鍵是屬于約束的一種,所謂約束顧名思義,就是限制你在數(shù)據(jù)庫(kù)的操作。而你對(duì)數(shù)據(jù)庫(kù)有什么操作,無(wú)非是增、刪、改、查,外鍵起的作用就是讓你在數(shù)據(jù)庫(kù)幫助的情況下更合理的增加數(shù)據(jù)的正確度。

2、所以,外鍵只是輔助,并不能起到你說(shuō)的【B.NAME是否也自動(dòng)出現(xiàn)張三兩個(gè)字】。

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

【班級(jí)信息表】存放的是班級(jí)信息表。

【學(xué)生表】存放的是學(xué)生信息,包含班級(jí)信息。

這個(gè)時(shí)候 在【學(xué)生表】中存放的班級(jí)信息應(yīng)該在【班級(jí)信息表】存在才合法,自己人為控制的話難免有漏掉的情況,用外鍵則可以讓數(shù)據(jù)庫(kù)自動(dòng)控制,當(dāng)插入【學(xué)生表】中的數(shù)據(jù)在【班級(jí)信息表】不存在的時(shí)候,數(shù)據(jù)庫(kù)不允許插入。

---

以上,希望對(duì)你有所幫助。

oracle創(chuàng)建外鍵

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)

多了個(gè)to

oracle 創(chuàng)建外鍵

oracle創(chuàng)建外鍵約束有兩種方法:

1、創(chuàng)建表時(shí)直接創(chuàng)建外鍵約束

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、先創(chuàng)建表,表創(chuàng)建成功后,單獨(dú)添加外鍵約束

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數(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)換成大寫(xiě)

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://chinadenli.net/article6/hddiig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、網(wǎng)站排名、網(wǎng)站建設(shè)移動(dòng)網(wǎng)站建設(shè)、全網(wǎng)營(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;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)