转帖 Oracle 主键的处理方法 http://www.cnblogs.com/Richardzhu/p/3470929.html
Oracle之主键的创建、添加、删除操作
一、创建表的同时创建主键约束
1.1、无命名

SQL> create table jack (id int primary key not null,name varchar2(20)); Table created SQL> select table_name,index_name from user_indexes where table_name='JACK'; TABLE_NAME INDEX_NAME ------------------------------ ------------------------------ JACK SYS_C0011100

1.2、有命名

SQL> create table jack (id int ,name varchar2(20),constraint ixd_id primary key(id)); Table created SQL> select table_name,index_name from user_indexes where table_name='JACK'; TABLE_NAME INDEX_NAME ------------------------------ ------------------------------ JACK IXD_ID

二、向表中添加主键约束

SQL> create table jack as select * from dba_objects; Table created SQL> desc jack; Name Type Nullable Default Comments -------------- ------------- -------- ------- -------- OWNER VARCHAR2(30) Y OBJECT_NAME VARCHAR2(128) Y SUBOBJECT_NAME VARCHAR2(30) Y OBJECT_ID NUMBER Y DATA_OBJECT_ID NUMBER Y OBJECT_TYPE VARCHAR2(19) Y CREATED DATE Y LAST_DDL_TIME DATE Y TIMESTAMP VARCHAR2(19) Y STATUS VARCHAR2(7) Y TEMPORARY VARCHAR2(1) Y GENERATED VARCHAR2(1) Y SECONDARY VARCHAR2(1) Y NAMESPACE NUMBER Y EDITION_NAME VARCHAR2(30) Y SQL> alter table jack add constraint pk_id primary key(object_id); Table altered SQL> select table_name,index_name from user_indexes where table_name='JACK'; TABLE_NAME INDEX_NAME ------------------------------ ------------------------------ JACK PK_ID

----另外当索引创建好以后再添加主键的效果:

SQL> create table jack as select * from dba_objects; Table created SQL> create index ind_object_id on jack(object_id); Index created SQL> select table_name,index_name from user_indexes where table_name='JACK'; TABLE_NAME INDEX_NAME ------------------------------ ------------------------------ JACK IND_OBJECT_ID SQL> desc jack; Name Type Nullable Default Comments -------------- ------------- -------- ------- -------- OWNER VARCHAR2(30) Y OBJECT_NAME VARCHAR2(128) Y SUBOBJECT_NAME VARCHAR2(30) Y OBJECT_ID NUMBER Y DATA_OBJECT_ID NUMBER Y OBJECT_TYPE VARCHAR2(19) Y CREATED DATE Y LAST_DDL_TIME DATE Y TIMESTAMP VARCHAR2(19) Y STATUS VARCHAR2(7) Y TEMPORARY VARCHAR2(1) Y GENERATED VARCHAR2(1) Y SECONDARY VARCHAR2(1) Y NAMESPACE NUMBER Y EDITION_NAME VARCHAR2(30) Y SQL> alter table jack add constraint pk_id primary key(object_id); Table altered SQL> desc jack; Name Type Nullable Default Comments -------------- ------------- -------- ------- -------- OWNER VARCHAR2(30) Y OBJECT_NAME VARCHAR2(128) Y SUBOBJECT_NAME VARCHAR2(30) Y OBJECT_ID NUMBER DATA_OBJECT_ID NUMBER Y OBJECT_TYPE VARCHAR2(19) Y CREATED DATE Y LAST_DDL_TIME DATE Y TIMESTAMP VARCHAR2(19) Y STATUS VARCHAR2(7) Y TEMPORARY VARCHAR2(1) Y GENERATED VARCHAR2(1) Y SECONDARY VARCHAR2(1) Y NAMESPACE NUMBER Y EDITION_NAME VARCHAR2(30) Y SQL> select table_name,index_name from user_indexes where table_name='JACK'; TABLE_NAME INDEX_NAME ------------------------------ ------------------------------ JACK IND_OBJECT_ID

三、修改主键约束
3.1、禁用/启用主键

SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name; TABLE_NAME INDEX_NAME CONSTRAINT_NAME CONSTRAINT_TYPE STATUS ------------------------------ ------------------------------ ------------------------------ --------------- -------- JACK PK_ID PK_ID P ENABLED SQL> alter table jack disable primary key; Table altered SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name; TABLE_NAME INDEX_NAME CONSTRAINT_NAME CONSTRAINT_TYPE STATUS ------------------------------ ------------------------------ ------------------------------ --------------- -------- SQL> alter table jack enable primary key; Table altered SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name; TABLE_NAME INDEX_NAME CONSTRAINT_NAME CONSTRAINT_TYPE STATUS ------------------------------ ------------------------------ ------------------------------ --------------- -------- JACK PK_ID PK_ID P ENABLED

3.2、重命名主键

SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name; TABLE_NAME INDEX_NAME CONSTRAINT_NAME CONSTRAINT_TYPE STATUS ------------------------------ ------------------------------ ------------------------------ --------------- -------- JACK PK_ID PK_ID P ENABLED SQL> alter table jack rename constraint pk_id to pk_jack_id; Table altered SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name; TABLE_NAME INDEX_NAME CONSTRAINT_NAME CONSTRAINT_TYPE STATUS ------------------------------ ------------------------------ ------------------------------ --------------- -------- JACK PK_ID PK_JACK_ID P ENABLED

四、删除表中已有的主键约束
4.1、无命名

----先利用user_cons_columns表查得主键名: SQL> select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = 'JACK'; OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME ------------------------------ ------------------------------ ------------------------------ ---------------- JACK SYS_C0011105 JACK ID SQL> select table_name,index_name from user_indexes where table_name='JACK'; TABLE_NAME INDEX_NAME ------------------------------ ------------------------------ JACK SYS_C0011105 SQL> alter table jack drop constraint SYS_C0011105; Table altered

4.2、有命名

SQL> select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = 'JACK'; OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME ------------------------------ ------------------------------ ------------------------------ ------------------------ JACK IXD_ID JACK ID SQL> alter table jack drop constraint IXD_ID; Table altered SQL> select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = 'JACK'; OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME ------------------------------ ------------------------------ ------------------------------ ------------------------

转帖 Oracle 主键的处理方法 http://www.cnblogs.com/Richardzhu/p/3470929.html的更多相关文章
- oracle 主键自增 设置----杜恩德
<div id="topicList"> <div class="forFlow"> <div class = "pos ...
- oracle主键自增
oracle主键自增 1建立数据表 create table Test_Increase( userid number(10) primary key, /*主键,自动增加*/ ...
- oracle 主键应用序列和触发器实现自动增长
oracle 主键自动增长 这几天搞Oracle,想让表的主键实现自动增长,查网络实现如下: create table simon_example ( id number(4) not null pr ...
- oracle 主键自动增长
oracle 主键自动增长 2009-12-11 16:07:00| 分类: 数据库资料|字号 订阅 这几天搞Oracle,想让表的主键实现自动增长,查网络实现如下: create tabl ...
- Oracle主键异常处理
Hibernate: insert into test1.WarnWeather (WAREA, wdate, WDAYS, WINFO, WTYPE, WNO) values (?, ?, ?, ? ...
- Spring中新建记录后返回自增主键的处理方法
接手一个旧系统改造的过程,要插入后立即返回自增值,不能重构guid类型主键,Spring提供了很优美的机制. Spring利用GeneratedKeyHolder,提供了一个可以返回新增记录对应主键值 ...
- oracle主键修改&设置某一字段可以为null
1.oracle主键修改 1.1)首先查看需要修改的表的主键名,默认的情况下,数据库会自动分配 select * from user_cons_columns where table_name='表名 ...
- mysql insert一条记录后 返回创建记录主键id的方法
mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...
- oracle 主键生成策略-sequence序列+trigger触发器
oracle中设置表的主键字段为自增序列(实例)1.首先创建一个表(如日志表) //删除库表中存在的日志表drop table S_LOG_INFO cascade constraints;//新建日 ...
随机推荐
- 整数划分 NBUT - 1046
题目很简单,把一个正整数分割成N个正整数之和.但是你得把所有的划分方法列出来,以字典序升序排序.对于每种划分方法,小的数字在前面. 思路:直接深度优先搜索,注意要判断前一位一定会比将要放入答案的因子小 ...
- pku-2909 (欧拉筛)
题意:哥德巴赫猜想.问一个大于2的偶数能被几对素数对相加. 思路:欧拉筛,因为在n<215,在3万多,一个欧拉筛得时间差不多4*104, 那么筛出来的素数有4千多个,那么两两组合直接打表,时间复 ...
- 远程桌面访问linux
hostname -I 10.13.34.185 4900 light-wings http://blog.csdn.net/qq754438390/article/details/50042511
- IDEA(jetbrain通用)优雅级使用教程(转)
文章转自 http://www.jianshu.com/p/3160ff832a9b 前面写过一篇IDEA的入门级文章,但是只学会了那些配置啊什么的并不能提高我们的开发效率.事实上,如果你IDEA用 ...
- P2731 骑马修栅栏 欧拉函数
题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编一个 ...
- nodeJS之crypto模块公钥加密及解密
nodeJS之crypto模块公钥加密及解密 NodeJS有以下4个与公钥加密相关的类.1. Cipher: 用于加密数据:2. Decipher: 用于解密数据:3. Sign: 用于生成签名:4. ...
- 1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(方案总揽)
我的这个升级篇的代码适用于自己所有的带WIFI和GPRS模块的开发板,升级功能实质上是通过MQTT把数据发给WIFI和GPRS模块,然后模块进行保存和运行. 这个升级程序是当时自己花了两个星期的时间写 ...
- ORA-14551: 无法在查询中执行 DML 操作
编写了一个oracle函数,函数体内实现一系列数据库的逻辑处理,涉及到数据的增删等操作,返回NCLOB类型. 然后通过查询方式调用函数: SELECT PKG.MY_FUN('A') FROM DUA ...
- 【博客大赛】使用LM2677制作的3V至24V数控可调恒压源
[博客大赛]使用LM2677制作的3V至24V数控可调恒压源 http://bbs.ednchina.com/BLOG_ARTICLE_3013105.HTM LM2677,是TI公司生产的高效率 ...
- Linux系列教程(六)——Linux常用命令之文件搜索命令
前一篇博客我们讲解了Linux链接命令和权限管理命令, 通过 ln -s 链接名 表示创建软链接,不加-s表示创建硬链接:还有三个更改权限的命令,chmod命令可以更改文件或目录权限,chown命令 ...