oracle怎么刪除唯一約束

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

oracle怎么刪除唯一約束

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

Oracle唯一約束

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

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

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

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

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

可以通過(guò)使用CONSTRAINT子句和約束名稱來(lái)指定一個(gè)唯一的約束名稱:

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

而如果想要?jiǎng)h除一個(gè)唯一的約束:

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

示例:

創(chuàng)建一個(gè)名為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列有一個(gè)唯一的約束,確保不會(huì)有重復(fù)的電子郵件。

以下語(yǔ)句在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列中插入一個(gè)電子郵件值已經(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ā)出以下錯(cuò)誤消息,表示違反了唯一性約束:

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

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

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

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

要?jiǎng)h除唯一約束UNIQUE_COMPANY_PHONE,請(qǐng)使用以下語(yǔ)句:

ALTER?TABLE?clients DROP?CONSTRAINT?unique_company_phone;

推薦教程:《Oracle教程

以上就是

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