成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle數(shù)據(jù)庫Constraint約束的常用操作及異常處理

數(shù)據(jù)庫 Oracle
本文我們主要介紹了Oracle數(shù)據(jù)庫Constraint約束的一些常用的操作及約束異常的處理,希望能夠?qū)δ兴鶐椭?/div>

繼上次我們介紹了:Oracle數(shù)據(jù)庫中Constraint約束的四對(duì)屬性,本次我們就介紹一下Oracle數(shù)據(jù)庫Constraint約束的常用操作及異常處理,接下來就讓我們來一起了解一下這部分內(nèi)容。

1.報(bào)告約束異常

如果校驗(yàn)約束時(shí)存在異常,則返回一個(gè)錯(cuò)誤,且完整性約束仍保持未被校驗(yàn)狀態(tài)。當(dāng)約束存在異常時(shí),一個(gè)語句就不能正確執(zhí)行,則此語句被回滾。如果存在異常,必須要更新或刪除了約束的所有異常后,才可以校驗(yàn)約束。但是在使用ALTER TABLE語句不能確定哪一行違反約束,為了確定哪一行,在發(fā)布ENABLE子句中帶有EXCEPTION選項(xiàng)的ALTER TABLE語句。

EXCEPTION選項(xiàng)將ROWID、OWNER、TABLE、ROWID、CONSTRAINT放到一個(gè)指定的表中。在啟用約束前,硬創(chuàng)建一個(gè)合適的異常報(bào)告表,用來接收ENABLE子句的EXCEPTION選項(xiàng)信息,可以直接執(zhí)行'?\rdbms\admin\utlexcpt.sql'或'?\rdbms\admin\utlexcpt1.sql'腳本來進(jìn)行創(chuàng)建。注意:這兩個(gè)腳本的區(qū)別在于數(shù)據(jù)庫的兼容性級(jí)別和所分析的表的類型。

使用的語法如下:

ALTER TABLE dept ENABLE PRIMARY KEY EXCEPTIONS INTO EXCEPTIONS;

或者

alter table team disable validate constraint id_num EXCEPTIONS INTO EXCEPTIONS;--這個(gè)方法不創(chuàng)建索引

如果存在異常,則直接查詢 SELECT * FROM EXCEPTIONS; 即可。如果需要更加詳細(xì)的信息,則可以使用ROWID與原表的ROWID進(jìn)行關(guān)聯(lián),這樣就可以查出原始表中當(dāng)前行的所有信息,并進(jìn)行修改。

如何利用EXCEPTIONS來處理實(shí)踐中的一些問題:

(1)在已有的constraint上加載數(shù)據(jù)

先disable,再加載數(shù)據(jù),然后enable and EXCEPTIONS INTO EXCEPTIONS,根據(jù)EXCEPTIONS表的紀(jì)錄delete,最后再enable。

(2)新建constraint,原有的數(shù)據(jù)違反了這個(gè)約束

先create disable,再enable and EXCEPTIONS INTO EXCEPTIONS

以下是一個(gè)新建外鍵的例子:

  1. alter table team add constraint id_num foreign key(id) references games(scores) INITIALLY disable;  
  2.  
  3. alter table team enable constraint id_num EXCEPTIONS INTO EXCEPTIONS;  
  4.  
  5. select * from EXCEPTIONS; 

2.關(guān)于contraint的一些常見操作

定義約束:

  1. alter table t add constraint ch_100 unique(id) disable ;  
  2.  
  3. alter table t add constraint ch_100 unique(id);  
  4.  
  5. alter table t add constraint ch_100 unique(id) deferred deferrable novalidate;  
  6.  
  7. CREATE TABLE dept_20  
  8.  
  9. (employee_id NUMBER(4),  
  10.  
  11. commission_pct NUMBER(7,2),  
  12.  
  13. department_id,  
  14.  
  15. CONSTRAINT fk_deptno  
  16.  
  17. FOREIGN KEY (department_id)  
  18.  
  19. REFERENCES departments(department_id)  
  20.  
  21. on delete/set null cascade);  
  22.  
  23. ALTER TABLE dept_20  
  24.  
  25. ADD CONSTRAINT fk_empid_hiredate  
  26.  
  27. FOREIGN KEY (employee_id, hire_date)  
  28.  
  29. REFERENCES hr.job_history(employee_id, start_date)  
  30.  
  31. EXCEPTIONS INTO EXCEPTIONS;  
  32.  
  33. CREATE TABLE divisions  
  34.  
  35. (div_no NUMBER CONSTRAINT check_divno  
  36.  
  37. CHECK (div_no BETWEEN 10 AND 99)  
  38.  
  39. DISABLE,  
  40.  
  41. div_name VARCHAR2(9) CONSTRAINT check_divname  
  42.  
  43. CHECK (div_name = UPPER(div_name))  
  44.  
  45. DISABLE,  
  46.  
  47. office VARCHAR2(10) CONSTRAINT check_office  
  48.  
  49. CHECK (office IN ('DALLAS','BOSTON',  
  50.  
  51. 'PARIS','TOKYO'))  
  52.  
  53. DISABLE); 

注:在使用外鍵參考了PRIMARY或UNIQUE鍵時(shí),不能停用或刪除被參考約束

延遲校驗(yàn)的啟用停用:

  1. SET CONSTRAINT(s) unq_num/all immediate;  
  2.  
  3. SET CONSTRAINT(s) unq_num/all deferred; 

停用:

  1. ALTER TABLE dept DISABLE CONSTRAINT dname_ukey;  
  2.  
  3. ALTER TABLE dept DISABLE PRIMARY KEY KEEP INDEX,  
  4.  
  5. DISABLE UNIQUE (dname, loc) KEEP INDEX; 

啟用非校驗(yàn):

  1. ALTER TABLE dept ENABLE CONSTRAINT dname_ukey;  
  2.  
  3. ALTER TABLE dept ENABLE NOVALIDATE PRIMARY KEY,  
  4.  
  5. ENABLE NOVALIDATE UNIQUE (dname, loc); 

啟用校驗(yàn):

  1. ALTER TABLE dept MODIFY CONSTRAINT dname_ukey VALIDATE;  
  2.  
  3. ALTER TABLE dept MODIFY PRIMARY KEY ENABLE NOVALIDATE; 

若要停用/刪除相關(guān)的FOREIGN KEY約束,則:

ALTER TABLE dept DISABLE PRIMARY KEY CASCADE;

刪除:

  1. ALTER TABLE dept DROP UNIQUE (dname, loc);  
  2.  
  3. ALTER TABLE emp DROP PRIMARY KEY KEEP INDEX,  
  4.  
  5. DROP CONSTRAINT dept_fkey; 

關(guān)于Oracle數(shù)據(jù)庫Constraint約束的一些基本操作就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. 數(shù)據(jù)庫集群中間件CJDBC詳細(xì)介紹
  2. SQL Server 2005無法連接到本地服務(wù)器的解決
  3. Linux下重新配置MySQL數(shù)據(jù)庫引擎innodb的過程
  4. SQL Server通過整理索引碎片和重建索引提高速度
  5. Linux+Oracle 10g RAC雙網(wǎng)卡綁定和解除綁定的實(shí)現(xiàn)
責(zé)任編輯:趙鵬 來源: CSDN博客
相關(guān)推薦

2011-08-10 15:38:12

ConstraintOracle

2011-05-26 14:43:49

ORACLE數(shù)據(jù)庫異常處理

2011-05-26 10:30:12

Oracle數(shù)據(jù)庫約束

2009-03-23 10:11:59

Oracle數(shù)據(jù)庫唯一約束

2011-05-26 14:31:57

Oracle數(shù)據(jù)庫

2011-04-07 15:47:28

MySQL數(shù)據(jù)庫

2017-12-26 15:10:30

數(shù)據(jù)庫Oracle操作語句

2011-08-01 13:59:22

Oracle數(shù)據(jù)庫命名空間

2010-04-06 16:50:07

Oracle數(shù)據(jù)庫

2010-05-07 13:28:43

Oracle數(shù)據(jù)庫

2010-04-30 14:39:03

Oracle數(shù)據(jù)庫

2011-01-21 11:12:01

Spring

2010-04-06 11:02:30

Oracle 數(shù)據(jù)庫

2011-05-26 13:36:40

Oracle數(shù)據(jù)庫時(shí)間處理

2011-01-06 09:28:19

SQL語句

2011-07-12 16:41:14

mysql處理異常

2011-09-02 10:06:51

OracleSqlLoad常用技巧

2010-04-07 14:22:46

2009-05-18 13:18:54

字符Oracle字符串

2010-04-09 14:37:08

Oracle數(shù)據(jù)庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: www国产成人 | 久草.com| 神马久久久久久久久久 | 亚洲福利在线观看 | 亚洲乱码一区二区三区在线观看 | 亚洲一区中文字幕在线观看 | 日本一区二区三区四区 | 国产精品一区二区视频 | 国产一级电影网 | 色成人免费网站 | 欧美黄色网 | 亚洲精品一区二区三区蜜桃久 | 久久婷婷色 | 不卡一区二区在线观看 | 亚洲高清av在线 | 亚洲国产欧美国产综合一区 | 男人天堂网址 | 青青草综合网 | 99亚洲| 国产精品久久久久久二区 | 国产精品高潮呻吟久久av野狼 | 在线看片国产精品 | 国产夜恋视频在线观看 | 色综合久久久 | 一区二区不卡 | 久久伊人操| 欧美成人精品在线观看 | 日韩性在线 | 亚洲a视频| 久久久久久国产精品久久 | 91精品中文字幕一区二区三区 | 亚洲 中文 欧美 日韩 在线观看 | 日韩在线一区二区三区 | 91精品在线播放 | 成人免费网站在线 | 国产成人在线视频 | 久久久久久久久久久久亚洲 | 99精品一区二区 | av电影一区| 亚洲精品一区在线观看 | 久久久91精品国产一区二区三区 |