真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle怎么設(shè)主外鍵 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

成都創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供博湖網(wǎng)站建設(shè)、博湖做網(wǎng)站、博湖網(wǎng)站設(shè)計(jì)、博湖網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、博湖企業(yè)網(wǎng)站模板建站服務(wù),十年博湖做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

oracle創(chuàng)建主外鍵,求解

1

一個(gè)表只能有一個(gè)主鍵,但是可以用兩個(gè)字段做聯(lián)合主鍵,但針對(duì)你發(fā)上來(lái)的情況,板塊表只可以用id字段做主鍵

create?table?bk(

id?number?primary?key,

name?varchar2(50)?not?null);

然后創(chuàng)建帖子表

create?table?tz(

id?number??primary?key,

title?varchar2(50),

bkid?number,

foreign?KEY(bkid)?REFERENCES?bk(id));

注意 :一定要先創(chuàng)建bk表,再創(chuàng)建tz表

Oracle外鍵與其主鍵的實(shí)際應(yīng)用方案

以下的文章主要是對(duì)Oracle主鍵與Oracle外鍵的實(shí)際應(yīng)用方案的介紹 此篇文章是我很然偶在一網(wǎng)站上發(fā)現(xiàn)的 如果你對(duì)Oracle主鍵與Oracle外鍵的實(shí)際應(yīng)用很感興趣的話(huà) 以下的文章就會(huì)給你提供更詳細(xì)的相關(guān)方面的知識(shí)

CREATE TABLE SCOTT MID_A_TAB

( A VARCHAR ( BYTE)

B VARCHAR ( BYTE)

DETPNO VARCHAR ( BYTE)

)TABLESPACE USERS ;

CREATE TABLE SCOTT MID_B_TAB

( A VARCHAR ( BYTE)

B VARCHAR ( BYTE)

DEPTNO VARCHAR ( BYTE)

)TABLESPACE USERS ;

給MID_A_TAB表添加主鍵

alter table mid_a_tab add constraint a_pk primary key (detpno);

給MID_B_TAB表添加Oracle主鍵

alter table mid_b_tab add constraint b_pk primary key(a);

給子表MID_B_TAB添加Oracle外鍵 并且引用主表MID_A_TAB的DETPNO列 并通過(guò)on delete cascade指定引用行為是級(jí)聯(lián)刪除

alter table mid_b_tab add constraint b_fk foreign key

(deptno) references mid_a_tab (detpno) on delete cascade;

向這樣就創(chuàng)建了好子表和Oracle主表

向主表添加數(shù)據(jù)記錄

SQL insert into mid_a_tab(a b detpno) values( );

已創(chuàng)建 行

已用時(shí)間: : :

向子表添加數(shù)據(jù)

SQL insert into mid_b_tab(a b deptno) values( );

insert into mid_b_tab values( )

*

第 行出現(xiàn)錯(cuò)誤:

ORA : 違反唯一約束條件 (SCOTT B_PK)

已用時(shí)間: : :

可見(jiàn)上面的異常信息 那時(shí)因?yàn)樽颖聿迦氲膁eptno的值是 然而此時(shí)我們主表中

detpno列只有一條記錄那就是 所以當(dāng)子表插入數(shù)據(jù)時(shí) 在父表中不能夠找到該引用

列的記錄 所以出現(xiàn)異常

但我們可以這樣對(duì)子表的數(shù)據(jù)的進(jìn)行插入(即 在子表的deptno列插入null 因?yàn)槲覀冊(cè)诮ū淼臅r(shí)候

并沒(méi)有對(duì)該列進(jìn)行not null的約束限制)

SQL insert into mid_b_tab(a b deptno) values( null);

已創(chuàng)建 行

已用時(shí)間: : :

現(xiàn)在如果我們把子表mid_b_tab中deptno列加上not null約束

SQL alter table mid_b_tab modify deptno not null;

alter table mid_b_tab modify deptno not null

*

第 行出現(xiàn)錯(cuò)誤:

ORA : 無(wú)法啟用 (SCOTT ) 找到空值

已用時(shí)間: : :

上面又出現(xiàn)異常 這是因?yàn)楝F(xiàn)在mid_b_tab表中有了一條記錄 就是我們先前添加的

那條記錄

null

現(xiàn)在我們要把該表的deptno列進(jìn)行not null約束限制 所以O(shè)racle不讓我們這樣干

那我們就只有把該表給delete或truncate掉 然后在修改deptno列為非空

SQL delete from mid_b_tab;

已刪除 行

已用時(shí)間: : :

再次修改子表mid_b_tab表的deptno列為非空

SQL alter table mid_b_tab modify deptno not null;

表已更改

已用時(shí)間: : :

修改成功!

我們?cè)俅尾迦霐?shù)據(jù)

insert into mid_b_tab(a b deptno) values( null);

試試

SQL insert into mid_b_tab(a b deptno) values( null);

insert into mid_b_tab(a b deptno) values( null)

*

第 行出現(xiàn)錯(cuò)誤:

ORA : 無(wú)法將 NULL 插入 ( SCOTT MID_B_TAB DEPTNO )

已用時(shí)間: : :

看見(jiàn)現(xiàn)在Oracle不讓我們插入空值了

所以我們?cè)趧?chuàng)建子表的Oracle外鍵約束時(shí) 該表的引用列必須要進(jìn)行not null限制 也可以在

該列創(chuàng)建unique 或primary key約束 并且引用列與被引用列的數(shù)據(jù)類(lèi)型必須相同

SQL insert into mid_b_tab(a b deptno) values( );

已創(chuàng)建 行

已用時(shí)間: : :

此時(shí)數(shù)據(jù)插入成功 因?yàn)榇藭r(shí)插入的 在主表中的被引用列中已經(jīng)存在了

現(xiàn)在我們一系列的操作

SQL select * from mid_b_tab ;

A B DE

已用時(shí)間: : :

SQL select * from mid_a_tab;

A B DE

已用時(shí)間: : :

SQL delete from mid_a_tab;

已刪除 行

lishixinzhi/Article/program/Oracle/201311/18331

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

以oracle自帶的用戶(hù)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建立?主鍵?和?外鍵?的問(wèn)題

3

stuid

number(10)

references

t_stu(stuid)

就是這個(gè)字段關(guān)聯(lián)t_stu表的stuid字段;

4

couseid

number(10),

5

constraint

fk_couseid

foreign

key(couseid)

6

references

t_couse(couseid)

7

on

delete

cascade);

這個(gè)是外鍵關(guān)聯(lián),并做同步刪除操作,就是如果t_couse表中的某個(gè)couseid數(shù)據(jù)被刪除了,那么這張表相關(guān)的數(shù)據(jù)也會(huì)自動(dòng)被刪除;跟上面的區(qū)別就在于有沒(méi)有做刪除操作;

on

delete

cascade

就是同步刪除的意思,比如t_couse表中有個(gè)couseid=5,t_score表中也有couseid=5的數(shù)據(jù),當(dāng)刪除t_couse表中couseid=5的數(shù)據(jù)時(shí),t_score表中所有couseid=5的數(shù)據(jù)也會(huì)自動(dòng)刪除;

可以寫(xiě)在同一行,但是要用逗號(hào)分格開(kāi);

望采納,碼字不容易


名稱(chēng)欄目:oracle怎么設(shè)主外鍵 oracle主鍵外鍵的作用
本文URL:http://weahome.cn/article/hjdgos.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部