日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

oracle 主键约束复制,Oracle主键及约束

發(fā)布時(shí)間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 主键约束复制,Oracle主键及约束 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Oracle主鍵Primary Key包含非空約束及唯一約束。

添加主鍵的語(yǔ)句

alter table table_nameadd constraint cons_name primary key(col_name);

查看主鍵是否被創(chuàng)建成功

select dbms_metadata.get_ddl(‘OBJECT_TYPE‘,‘NAME‘,‘SCHEMA‘) from dual;

OBJECT_TYPE (TABLE,PARTITION,INDEX......)

NAME (OBJECT_NAME)

SCHEMA?(INSTANCE)

對(duì)應(yīng)object表中的相應(yīng)內(nèi)容:

select object_type,object_name,owner from dba_objects

獲取到的DDL語(yǔ)句中表示已經(jīng)創(chuàng)建了主鍵列,該列位于CUSTTEL上CREATE?TABLE?"NEWCCS"."USERLEVELBYTEL_BAK"

(?"CUSTTEL"?VARCHAR2(20),

"USERLEVEL"?NUMBER(*,0)?NOT?NULL?ENABLE,

"CUSTID"?VARCHAR2(20)

)?PCTFREE?10?PCTUSED?40?INITRANS?1?MAXTRANS?255?NOCOMPRESS?LOGGING

STORAGE(INITIAL?65536?NEXT?1048576?MINEXTENTS?1?MAXEXTENTS?2147483645

PCTINCREASE?0?FREELISTS?1?FREELIST?GROUPS?1?BUFFER_POOL?DEFAULT)

TABLESPACE?"NEWCCS"?;

ALTER?TABLE?"NEWCCS"."USERLEVELBYTEL_BAK"?MODIFY?("USERLEVEL"?NOT?NULL?ENABLE);

創(chuàng)建主鍵后發(fā)現(xiàn)該表增加了唯一索引及主鍵字段CREATE?TABLE?"NEWCCS"."USERLEVELBYTEL_BAK"

(?"CUSTTEL"?VARCHAR2(20),

"USERLEVEL"?NUMBER(*,0)?NOT?NULL?ENABLE,

"CUSTID"?VARCHAR2(20),

CONSTRAINT?"PK_PRIMARY"?PRIMARY?KEY?("CUSTTEL")

USING?INDEX?PCTFREE?10?INITRANS?2?MAXTRANS?255

STORAGE(INITIAL?65536?NEXT?1048576?MINEXTENTS?1?MAXEXTENTS?2147483645

PCTINCREASE?0?FREELISTS?1?FREELIST?GROUPS?1?BUFFER_POOL?DEFAULT)

TABLESPACE?"NEWCCS"??ENABLE

)?PCTFREE?10?PCTUSED?40?INITRANS?1?MAXTRANS?255?NOCOMPRESS?LOGGING

STORAGE(INITIAL?65536?NEXT?1048576?MINEXTENTS?1?MAXEXTENTS?2147483645

PCTINCREASE?0?FREELISTS?1?FREELIST?GROUPS?1?BUFFER_POOL?DEFAULT)

TABLESPACE?"NEWCCS"?;

CREATE?UNIQUE?INDEX?"NEWCCS"."PK_PRIMARY"?ON?"NEWCCS"."USERLEVELBYTEL_BAK"?("CUSTTEL")

PCTFREE?10?INITRANS?2?MAXTRANS?255

STORAGE(INITIAL?65536?NEXT?1048576?MINEXTENTS?1?MAXEXTENTS?2147483645

PCTINCREASE?0?FREELISTS?1?FREELIST?GROUPS?1?BUFFER_POOL?DEFAULT)

TABLESPACE?"NEWCCS"?;

ALTER?TABLE?"NEWCCS"."USERLEVELBYTEL_BAK"?ADD?CONSTRAINT?"PK_PRIMARY"?PRIMARY?KEY?("CUSTTEL")

USING?INDEX?PCTFREE?10?INITRANS?2?MAXTRANS?255

STORAGE(INITIAL?65536?NEXT?1048576?MINEXTENTS?1?MAXEXTENTS?2147483645

PCTINCREASE?0?FREELISTS?1?FREELIST?GROUPS?1?BUFFER_POOL?DEFAULT)

TABLESPACE?"NEWCCS"??ENABLE;

ALTER?TABLE?"NEWCCS"."USERLEVELBYTEL_BAK"?MODIFY?("USERLEVEL"?NOT?NULL?ENABLE);

驗(yàn)證:

反復(fù)向表中插入數(shù)據(jù) insert into userlevelbytel values(‘10010‘,‘3‘,‘ ‘);

出現(xiàn)如下錯(cuò)誤提示(唯一約束錯(cuò)誤):

ORA-00001: unique constraint (NEWCCS.PK_PRIMARY) violated

插入空值 insert into userlevelbytel values(‘‘,‘3‘,‘ ‘);

出現(xiàn)如下錯(cuò)誤提示(唯一約束錯(cuò)誤):

ORA-01400: cannot insert NULL into ("NEWCCS"."USERLEVELBYTEL_BAK"."CUSTTEL")

單獨(dú)添加唯一約束對(duì)比區(qū)別

刪除該表主鍵:

alter table userlevelbytel_bak drop constraint pk_primary;CREATE?TABLE?"NEWCCS"."USERLEVELBYTEL_BAK"

(?"CUSTTEL"?VARCHAR2(20),

"USERLEVEL"?NUMBER(*,0)?NOT?NULL?ENABLE,

"CUSTID"?VARCHAR2(20),

CONSTRAINT?"UNIQUE_CUSTTEL"?UNIQUE?("CUSTTEL")

USING?INDEX?PCTFREE?10?INITRANS?2?MAXTRANS?255?COMPUTE?STATISTICS

STORAGE(INITIAL?65536?NEXT?1048576?MINEXTENTS?1?MAXEXTENTS?2147483645

PCTINCREASE?0?FREELISTS?1?FREELIST?GROUPS?1?BUFFER_POOL?DEFAULT)

TABLESPACE?"NEWCCS"??ENABLE

)?PCTFREE?10?PCTUSED?40?INITRANS?1?MAXTRANS?255?NOCOMPRESS?LOGGING

STORAGE(INITIAL?65536?NEXT?1048576?MINEXTENTS?1?MAXEXTENTS?2147483645

PCTINCREASE?0?FREELISTS?1?FREELIST?GROUPS?1?BUFFER_POOL?DEFAULT)

TABLESPACE?"NEWCCS"?;

CREATE?UNIQUE?INDEX?"NEWCCS"."UNIQUE_CUSTTEL"?ON?"NEWCCS"."USERLEVELBYTEL_BAK"?("CUSTTEL")

PCTFREE?10?INITRANS?2?MAXTRANS?255?COMPUTE?STATISTICS

STORAGE(INITIAL?65536?NEXT?1048576?MINEXTENTS?1?MAXEXTENTS?2147483645

PCTINCREASE?0?FREELISTS?1?FREELIST?GROUPS?1?BUFFER_POOL?DEFAULT)

TABLESPACE?"NEWCCS"?;

ALTER?TABLE?"NEWCCS"."USERLEVELBYTEL_BAK"?MODIFY?("USERLEVEL"?NOT?NULL?ENABLE);

ALTER?TABLE?"NEWCCS"."USERLEVELBYTEL_BAK"?ADD?CONSTRAINT?"UNIQUE_CUSTTEL"?UNIQUE?("CUSTTEL")

USING?INDEX?PCTFREE?10?INITRANS?2?MAXTRANS?255?COMPUTE?STATISTICS

STORAGE(INITIAL?65536?NEXT?1048576?MINEXTENTS?1?MAXEXTENTS?2147483645

PCTINCREASE?0?FREELISTS?1?FREELIST?GROUPS?1?BUFFER_POOL?DEFAULT)

TABLESPACE?"NEWCCS"??ENABLE;

可以看到唯一約束被創(chuàng)建

測(cè)試:

反復(fù)插入非空記錄:

ORA-00001: unique constraint (NEWCCS.UNIQUE_CUSTTEL) violated

反復(fù)插入空記錄:

select * from userlevelbytel_bak where custtel is null;

查詢結(jié)果為多個(gè)重復(fù)的空記錄

這里面可以看出唯一約束僅對(duì)非空值進(jìn)行約束,而在Oracle中NULL值無法比較,因此即使反復(fù)插入,唯一約束也無法限制,但在組合約束條件下,比如(A,B,NULL)則是可以進(jìn)行比較的。

舉例:

alter table userlevelbytel_bak add constraint unique_custtel unique(custtel,userlevel);

反復(fù)插入空記錄:

ORA-00001: unique constraint (NEWCCS.UNIQUE_CUSTTEL) violated

原文:http://onlinekof2001.blog.51cto.com/3106724/1582962

總結(jié)

以上是生活随笔為你收集整理的oracle 主键约束复制,Oracle主键及约束的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。