程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle的unique約束

oracle的unique約束

編輯:Oracle教程

oracle的unique約束


unique約束是指唯一約束,用於要求列種不允許出現重復值。可以為單獨的列添加一個unique約束,也可以為多個列添加一個unique約束(屬於表級約束)。如果為多個列添加一個unique約束,只需要保證這多個列的值不會全部相同即可。
在創建表時,為列添加unique約束,形式如下:
column_name data_type [constraint constraint_name] unique或
create table table_name(
column_name data_type,[,...]
[constraint constraint_name] unique(column_name)
[,...]
)

也可以為已經創建的表中的列提娜姬unique約束,這時就需要使用alter talbe ..add語句,形式如下:
alter table table_name add [constraint constraint_name] unique(column_name);


刪除unique約束
刪除列上的unique約束,可以使用alter table...drop語句,形式如下:
alter table table_name drop unique(column_name)
如果約束有名稱,也可以使用指定名稱的方式刪除該約束,語句形式如下:
alter table table drop constraint constraint_name;


具體的操作如下:
SQL> create table person
2 (pid number(4) not null unique,
3 pname varchar2(10) unique,
4 sex char(2)
5 );
表已創建。
上面創建一張person表,為pid和pname都指定唯一約束
SQL> insert into person values(1,'aaa','女');
已創建 1 行。
SQL> insert into person values(2,'aaa','女');
insert into person values(2,'aaa','女')
*
第 1 行出現錯誤:
ORA-00001: 違反唯一約束條件 (SYSTEM.SYS_C0010079)
SQL> insert into person values(2,'abcd','女');
已創建 1 行。
如上面所示,當添加的名字相同時報錯。
SQL> insert into person values(2,'abcd','女');
已創建 1 行
修改下pname,此時就沒報錯。

再創建另一張表。
SQL> create table p2(
pid number(4),
pname varchar2(10),
psex char(2),
constraint p2_unique unique(pid,pname)
 );
表已創建。
SQL> alter table p2 add constraint unique_p2sex unique(psex); --為psex添加unique
表已更改。
SQL> alter table p2 drop unique (psex); --刪除unique唯一約束
表已更改。
SQL> alter table p2 drop constraint p2_unique;
表已更改。
SQL>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved