oracle 对两列加唯一性束_oracle中创建unique唯一约束(单列和多列) 。
oracle中的unique約束是用來保證表中的某一類,或者表中的某一類組合起來不重復(fù)的一種手段。我們在可以在創(chuàng)建表時或者創(chuàng)建好后通過修改表的方式來創(chuàng)建oracle中的unique約束。
下面是一些創(chuàng)建unique約束的例子:
create table unique_test
(id number,
fname varchar2(20),
lname varchar2(20),
address varchar2(100),
email varchar2(40),
constraint name_unique unique(fname,lname))
在這里我們建立了一個表unique_test,并將其中的fname和lname組合起來建立了一個唯一約束。
我們也還可以在表創(chuàng)建完成后手動的通過修改表的方式來增加約束,例如:
alter table unique_test
add constraint email_unique unique(email);
下面我們來往表里面插入數(shù)據(jù),
insert into unique_test(id,fname,lname) values(1,’德華’,'劉’)
這一行可以正常的被插入
因為我們在建立表時曾把fname和lname聯(lián)合起來作為一個約束,因為如果我們希望再次插入劉德華,
insert into unique_test(id,fname,lname) values(2,’德華’,'劉’)
是會出現(xiàn)如下錯誤的:
ORA-00001: 違反唯一約束條件 (SYS.NAME_UNIQUE)
但我們?nèi)绻臑槿缦轮?#xff1a;
insert into unique_test(id,fname,lname) values(2,’學(xué)友’,'張’);
又可以正常插入了。
有些朋友可能會有疑問,我們不是為email也建立的一個唯一約束嗎?為什么這兩行數(shù)據(jù)都沒有為email列賦值,也就是或兩行的email列都是空值,而插入也成功了呢?
這是因為一個空值(null)的含義是該列當(dāng)前的狀態(tài)是不存在,他永遠不可能會與另外一個空值相等。所以也就不存在違反唯一約束之說了。
總結(jié)
以上是生活随笔為你收集整理的oracle 对两列加唯一性束_oracle中创建unique唯一约束(单列和多列) 。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java字节流转字符串_字节流与字符流的
- 下一篇: 物理不突出能学计算机吗,物理成绩不突出,