oracle处理已有数据的字段(主键)类型修改方法

  1.   来自本人oracle最新sql回忆性演练1一篇博文http://blog.csdn.net/luozhonghua2014/article/details/45729669
  2.   只所以重新发布一次,就是抽取经验,让大家可以找到解决方法
  3. --------处理已有数据的字段类型修改(前4步操作会使表中的约束丢失)
    --1重命名字段
    alter table example rename column id to sid;
    --2添加id字段
    alter table example add id varchar2(200);
    --3更新数据
    update example set id = sid;
    --4删除备份数据的字段
    alter table example drop column sid;
    --5新增约束
    alter table example add constraint exmaple_id primary key(id);
    -----------------------------add constraint--------------------------------------
    alter table example add unique(age);
    alter table example drop unique(age);
    --查找表的唯一性约束(包括名称,构成列)
    select column_name
      from user_cons_columns cu, user_constraints au
     where cu.constraint_name = au.constraint_name
       and cu.table_name = 'example';  
时间: 2024-12-11 06:21:44

oracle处理已有数据的字段(主键)类型修改方法的相关文章

oracle主键的设置方法

 主键: 1.主键约束: 一个表只能有一个主键约束.主键可以是单个字段,也可以是多个字段.无论是哪种情况,其所有字段都是NOT NULL. 2.Unique约束:一个表可以有多个Unique约束,Unique的字段可以为NULL. 3.主键与Unique:不同点在于一个表只能有一个主键约束,但是可以有多个Unique约束:主键所有字段都是not null,unique可以是 null:相同点在于都能保证唯一性. 4.主键.Unique与索引:主键约束与Unique约束默认会成为索引.当主键和Un

mysql使用mybatis批量添加数据,返回主键

问题描述 mysql使用mybatis批量添加数据,返回主键 mysql使用mybatis批量添加,使用各种方法都无法返回对应的主键,请兄弟们不吝赐教 解决方案 该功能无法实现,只能分步骤来,先插入在查询 解决方案二: 批量添加还要返回主键??这个不太可能吧.最多也就返回插入的条数.如果返回主键,那不是了返回一个list然后里面放主键?一条一条插入倒是可以返回主键 解决方案三: 分步骤来,先插入在查询

Oracle增加修改删除字段/主键的方法

Oracle修改字段名称 alter table xgj  rename column  old_name to new_name; 修改字段类型 alter table tablename modify (column datatype [default value][null/not null],-.); 例子 假设表xgj,有一个字段为name,数据类型char(20). create table xgj( id number(9) , name char(20) ) 1.字段为空,则不管

批量修改数据 要根据主键Id 批量修改字段Value的值 且 value 的值是不一样。

问题描述 解决方案 解决方案二:value值和主键值什么关系,如果没关系,就用主键值+1解决方案三:updateStoreInfosetValue=Id所有的value就执行为对应的id了,如果id是要自己设置的话,循环执行sql就可以了.解决方案四:没说到底value的值是啥,光说不一样?解决方案五:引用3楼Z65443344的回复: 没说到底value的值是啥,光说不一样? Value的值是客户端传过来的Id也是....解决方案六:引用1楼bdmh的回复: value值和主键值什么关系,如果

使用Kettle数据迁移添加主键和索引

Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,主要用于数据抽取.转换.装载.kettle兼容了市面上几十种数据库,故用kettle来做数据库的迁移视乎是个不错的选择. kettle的数据抽取主要在于抽取数据,而没有考虑数据库的函数.存储过程.视图.表结构以及索引.约束等等,而这些东西恰恰都是数据迁移需要考虑的事情.当然,如果在不考虑数据库中的函数.存储过程.视图的情况下,使用kettle进行数据的迁移还算是一个可行的方案. 这篇文章主要是讲述在使用kettle进行数据库的

如何获取SqlServer2005表结构(字段,主键,外键,递增,描述)_Mysql

1.获取表的基本字段属性 复制代码 代码如下: --获取SqlServer中表结构 SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND syscolumns.id = object_id('你的表名') 运行效果 2.如果还想要获取字段的描述

mysql 插入数据失败防止自增长主键增长的方法

mysql设置了自增长主键ID,插入失败的那个自增长ID也加一的,比如失败5个,下一个成功的不是在原来最后成功数据加1,而是直接变成加6了,失败次数一次就自动增长1了,能不能让失败的不增长的? 或者说mysql插入数据失败,怎么能防止主键增长? MYSQL不保证AUTO_INCREMENT依次增长(1,2,3,4,5),但是可以保证正向增长(1,3,5,9)所以,当你某次操作失败后,下次AUTO_INCREMENT就不是顺序的了. innodb的自增是缓存在内存字典中的,分配方式是先预留,然后再

MyBatis中insert操作返回主键的实现方法_java

在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能 针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle.DB2,可以采用如下配置方式: <insert id="add" parameterType="vo.Category"> <selectKey resultType="

Mysql自增主键ID重新排序方法详解

Mysql数据库表的自增主键ID号乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键:  代码如下 复制代码 ALTER TABLE `table_name` DROP `id`; 2,添加新主键字段:  代码如下 复制代码 ALTER TABLE `table_name` ADD `id` MEDIUMINT( 8 ) NOT NULL FIRST; 3,设置新主键:  代码如下 复制代码 ALTER TABLE `table_name` MODIFY C