在oracle中,可以使用「ALTER TABLE」語句和「DROP CONSTRAINT」關鍵字來刪除唯一約束,語法為「ALTER TABLE 資料表名 DROP CONSTRAINT 唯一約束名稱;」。
本教學操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。
Oracle唯一約束
#唯一約束是指所有記錄中欄位的值不能重複出現。
一個唯一的約束是一個完整性約束,它確保儲存在一列或一組列中的資料在表中的行之間是唯一的。
通常,在使用內聯約束語法建立表時,將唯一約束套用至列,如下所示:
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 数据表名 DROP CONSTRAINT 唯一约束名;
範例:
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列有一個唯一的約束,確保不會有重複的電子郵件。
clients表中插入一行:
INSERT INTO clients(first_name,last_name, email, company_name, phone) VALUES('Christene','Snider','we.chen@oraok.com', 'ABC Inc', '408-875-6075');現在,我們嘗試在
email列中插入一個電子郵件值已經存在的新行:
INSERT INTO clients(first_name,last_name, email, company_name, phone) VALUES('Sherly','Snider','we.chen@oraok.com', 'ABC Inc', '408-875-6076');Oracle發出下列錯誤訊息,表示違反了唯一性限制:
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);結果,
company_name和
phone列中值的組合在
clients表中的行中是唯一的。
要刪除唯一約束UNIQUE_COMPANY_PHONE,請使用以下語句:
ALTER TABLE clients DROP CONSTRAINT unique_company_phone;推薦教學:《
Oracle教學》
以上是oracle怎麼刪除唯一約束的詳細內容。更多資訊請關注PHP中文網其他相關文章!