oracle怎么刪除唯一約束

oracle中,可以使用“ALTER TABLE”語句和“DROP CONSTRAINT”關(guān)鍵字來刪除唯一約束,語法為“ALTER TABLE 數(shù)據(jù)表名 DROP CONSTRAINT 唯一約束名;”。

oracle怎么刪除唯一約束

本教程操作環(huán)境:Windows7系統(tǒng)、Oracle 11g版、Dell G3電腦。

Oracle唯一約束

唯一約束是指所有記錄中字段的值不能重復(fù)出現(xiàn)。

一個唯一的約束是一個完整性約束,它確保存儲在一列或一組列中的數(shù)據(jù)在表中的行之間是唯一的。

通常,在使用內(nèi)聯(lián)約束語法創(chuàng)建表時,將唯一約束應(yīng)用于列,如下所示:

CREATE?TABLE?table_name?( ????... ????column_name?data_type?UNIQUE ????... );

此唯一約束指定column_name中的值在整個表中是唯一的。

可以通過使用CONSTRAINT子句和約束名稱來指定一個唯一的約束名稱:

CREATE?TABLE?table_name?( ????... ????column_name?data_type?CONSTRAINT?unique_constraint_name?UNIQUE ????... );

而如果想要刪除一個唯一的約束:

ALTER?TABLE?數(shù)據(jù)表名 DROP?CONSTRAINT?唯一約束名;

示例:

創(chuàng)建一個名為clients的表:

CREATE?TABLE?clients?( ????client_id?NUMBER?GENERATED?BY?DEFAULT?AS?IDENTITY, ????first_name?VARCHAR2(50)?NOT?NULL, ????last_name?VARCHAR2(50)?NOT?NULL, ????company_name?VARCHAR2(255)?NOT?NULL, ????email?VARCHAR2(255)?NOT?NULL?UNIQUE, ????phone?VARCHAR(25) );

email列有一個唯一的約束,確保不會有重復(fù)的電子郵件。

以下語句在clients表中插入一行:

INSERT?INTO?clients(first_name,last_name,?email,?company_name,?phone) VALUES('Christene','Snider','we.chen@oraok.com',?'ABC?Inc',?'408-875-6075');

現(xiàn)在,我們嘗試在email列中插入一個電子郵件值已經(jīng)存在的新行:

INSERT?INTO?clients(first_name,last_name,?email,?company_name,?phone) VALUES('Sherly','Snider','we.chen@oraok.com',?'ABC?Inc',?'408-875-6076');

Oracle發(fā)出以下錯誤消息,表示違反了唯一性約束:

SQL?Error:?ORA-00001:?unique?constraint?(OT.SYS_C0010726)?violated

如果要為兩列:company_name和phone添加唯一的約束,可以使用以下ALTER TABLE語句:

ALTER?TABLE?clients ADD?CONSTRAINT?unique_company_phone?UNIQUE(company_name,?phone);

結(jié)果,company_name和phone列中值的組合在clients表中的行中是唯一的。

要刪除唯一約束UNIQUE_COMPANY_PHONE,請使用以下語句:

ALTER?TABLE?clients DROP?CONSTRAINT?unique_company_phone;

推薦教程:《Oracle教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊7 分享