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