oracle 10g 關於主鍵延遲

2021-06-04 12:07:43 字數 3594 閱讀 3537

-- 新建乙個表 create table try as select * from 學生基本資訊 ; -- 新增可延遲主鍵 alter table try add constraint pk_try primary key( 學號 ) deferrable initially immediate; -- 設定主鍵延遲 set constraint pk_try deferred; -- 插入主鍵重複的行

-- 新建乙個表

create table try as select * from 學生基本資訊;

-- 新增可延遲主鍵

alter table try add constraint pk_try primary key(學號) deferrable initially immediate;

-- 設定主鍵延遲

set constraint pk_try deferred;

-- 插入主鍵重複的行

insert into try values('222005389081101','張三','男','漢族');

-- 刪除帶有外來鍵依賴的主鍵

alter table 學生基本資訊 drop constraint pk_baseinfo cascade;

-- 新增回去

alter table 學生基本資訊 add constraint pk_baseinfo primary key(學號);

-- 新增可延遲的外來鍵

alter table 學生成績 add constraint fk_info_grade foreign key(學號) references 學生基本資訊(學號) deferrable initially immediate;

-- 設定外來鍵延遲

set constraint fk_info_grade deferred;

-- 插入不滿足外來鍵約束的行

insert into 學生成績 values('222005389081109','c010',80);

-- 使約束失效

alter table 學生成績 disable constraint fk_info_grade;

-- 再次插入

insert into 學生成績 values('222005389081109','c010',80);

-- 使約束生效

alter table 學生成績 enable constraint fk_info_grade;

-- 刪除列

delete from 學生成績 where 學號='222005389081109';

-- 新建學生成績表

create table try2 as select * from 學生成績;

-- 新增級聯刪除的外來鍵

alter table try2 add constraint fk_try2 foreign key(學號) references try(學號) on delete cascade;

-- 刪除try中的最後乙個記錄

delete from try where 學號='222005389081077';

-- 執行存放約束行的系統指令碼

@ d:\oracle\product\10.2.0\db_1\rdbms\admin\utlexcpt.sql

-- 查詢違反約束條件的行

create table student as select * from 學生基本資訊;

alter table student add constraint pk_student primary key(學號);

alter table student disable constraint pk_student;

insert into student values('222005389081102','張三','男','漢族');

alter table student enable constraint pk_student;

alter table student enable constraint pk_student exceptions into exceptions;

select * from exceptions;

select * from student where rowid='aaam7saaeaaaaccabl'

alter table 學生成績 disable constraint fk_info_grade;

insert into 學生成績 values('222005389081109','c011',80);

commit;

alter table 學生成績 enable constraint fk_info_grade exceptions into exceptions;

select * from exceptions;

5.host md d:\oracle\ext_file

host copy d:\oracle\student.txt d:\oracle\ext_file\*.*

create or replace directory stud_ext as 'd:\oracle\ext_file';

conn sys/aaa as sysdba

grant read on directory stud_ext to hu;

conn hu/aaa

create table student_ext

(sno varchar2(20),

name varchar2(8),

*** varchar2(2),

nation varchar2(8))

organization external(

type oracle_loader

default directory stud_ext

access parameters(fields terminated by ',')

location('student.txt')

reject limit unlimited

最初由 wabjtam123 發布

[b]alter table employee add constraint pk_employee_empno primary key (empno) deferrable initally immediate;

這個表示延遲的主鍵約束

聽說這個延遲表示事務提交後再檢查,而不延遲就表示不要到事務提交後才檢查,比如有插入有更新,未提交就立即檢查

我覺的這個延遲約束這樣有什麼意義,感覺一點點意義都沒有,反而功能拿出來害人,我如果做了n多事情,最後再提交,提交的時候出錯了,我前面做的都白做了,不如早點提醒我不能這樣做,有約束,大家覺的呢? [/b]

如果您以form的方式輸入資料就有用了,如果不延遲,由於幾個表已經建立外來鍵的聯絡所以輸入的次序必須嚴格定義,否則就會產生違反完整性約束的錯誤。

oracle10g 解除安裝

1 oracle 10g解除安裝軟體環境 1 windows xp oracle 10g2 oracle 安裝路徑為 d oracle 實現方法 1 開始 設定 控制面板 管理工具 服務停止所有 oracle 服務 2 開始 程式 oracle oradb 10g home1 oracle inst...

Oracle10g解除安裝

一 軟體解除安裝 1 windows xp oracle 10g 2 oracle安裝路徑為 d oracle 1 如果資料庫配置了自動儲存管理 asm 應該先刪除聚集同步服務css cluster synchronization services 刪除css服務的方法是在dos命令列中執行如下命令...

解除安裝oracle10g

1.停止所有與oracle相關的服務。2.使用oui oracle universal installer 解除安裝oracle軟體。開始 程式 oracle oradb110g home1 oracle installation product universal installer.3.刪除登錄...