精华内容
下载资源
问答
  • oracle修改主键方法

    2020-11-27 18:22:03
    修改主键方法: step1:删除已建好的主键 alter table [表名] drop primary key --有主键主键约束名的情形 alter table [表名] drop constraint [主键约束名] --有主键约束名的情形 step2:重新新建主键 alter table...

    修改主键方法:
    step1:删除已建好的主键

    alter table [表名] drop primary key --有主键无主键约束名的情形
    alter table [表名] drop constraint [主键约束名] --有主键约束名的情形
    

    step2:重新新建主键

    alter table add primary key ([字段名1],[字段名2],...)  --重建主键
    alter table add constraint [主键约束名]  primary key ([字段名1],[字段名2],...) --重建主键约束
    

    不知道主键约束名可通过以下语句查询:

    select * from user_cons_columns t where t.table_name = '[表名]'
    
    
    展开全文
  • Oracle修改主键约束  项目需求,有张表,原有三个联合主键,现在需要再加一个字段进去,而恰恰这个字段可以为空的。去数据库捞了一把,还好数据都不为空: SQL> select count(*) from t_wlf_record t where t...

     

    Oracle修改主键约束

      项目需求,有张表,原有三个联合主键,现在需要再加一个字段进去,而恰恰这个字段可以为空的。去数据库捞了一把,还好数据都不为空:

    SQL> select count(*) from t_wlf_record t where t.acceptinvitetime is null;
     
      COUNT(*)
    ----------
             0

      那么我们需要先把这个字段修改为非空字段:

    alter table T_WLF_RECORD modify ACCEPTINVITETIME not null;

      接着才能修改主键约束,约束无法直接修改,只能先删后插:

    alter table T_WLF_RECORD drop constraint SYS_C0018888;
    alter table T_WLF_RECORD add constraint PK_T_WLF_RECORD PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID, ACCEPTINVITETIME);

      最后把注释改下:

    comment on column T_WLF_RECORD.ACCEPTINVITETIME is '接受邀请时间(联合主键)';

      作为一个专业人员,我们应该把回滚语句也写好:

    alter table T_WLF_RECORD drop constraint PK_T_WLF_RECORD;
    alter table T_WLF_RECORD add constraint SYS_C0018888 PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID);
    alter table T_WLF_RECORD modify ACCEPTINVITETIME null;
    comment on column T_WLF_RECORD.ACCEPTINVITETIME is '接受邀请时间';

      最后总结下:约束的作用是保证数据的唯一性和完整性,比如主键约束你作为主键的字段不能为空,唯一约束你不能插入相同数据。具体区分如下:

      1、主键约束要求列值非空,而唯一键约束和唯一索引不要求列值非空,都不能有重复数据;

      2、主键约束和唯一键约束会隐式创建同名的唯一索引,当主键约束或者唯一键约束失效或被删掉时,隐式创建的唯一索引会被删除。

     

     

    展开全文
  • 我们产品从SPC100升级到SPC200的时候,由于数据库表列的数据类型发生了改变,需要写SQL脚本,完成数据库的升级。需要将表T_MOBILE_INDVCONFIG的主键列id从varchar2(100),改成number(17)。可以参考如下SQL:--将原来...

    我们产品从SPC100升级到SPC200的时候,由于数据库表列的数据类型发生了改变,需要写SQL脚本,完成数据库的升级。需要将表T_MOBILE_INDVCONFIG的主键列id从varchar2(100),改成number(17)。可以参考如下SQL:

    --将原来的ID列重命名为bak_id

    ALTER TABLE T_MOBILE_INDVCONFIG RENAME COLUMN id TO bak_ID;

    --添加一个与原来的列一样名字的列

    ALTER TABLE T_MOBILE_INDVCONFIG ADD id NUMBER(17);

    --将bak_id中的数据转换类型并保存到新加的ID列

    UPDATE T_MOBILE_INDVCONFIG SET ID = CAST(bak_ID AS NUMBER(17));

    --删除原有的列

    ALTER TABLE T_MOBILE_INDVCONFIG DROP COLUMN bak_ID;

    --设置新列属性,这里例子是设置为非空

    ALTER TABLE T_MOBILE_INDVCONFIG MODIFY (ID NUMBER(17) NOT NULL);

    --重建主键,因为原来的已经被删除,原来的ID列有索引的也需要重建

    ALTER TABLE T_MOBILE_INDVCONFIG ADD CONSTRAINT PK_SYS_SMSGATE PRIMARY KEY (ID);

    原文:http://blog.csdn.net/aitangyong/article/details/42749699

    展开全文
  • Oracle修改主键约束

    2021-04-08 17:12:48
    项目需求,有张表,原有三个联合主键,现在需要再加一个字段进去,而恰恰这个字段可以为空的。去数据库捞了一把,还好数据都不为空: SQL> select count(*) from t_wlf_record t where t.acceptinvitetime is ...

      项目需求,有张表,原有三个联合主键,现在需要再加一个字段进去,而恰恰这个字段可以为空的。去数据库捞了一把,还好数据都不为空:

    SQL> select count(*) from t_wlf_record t where t.acceptinvitetime is null;
     
      COUNT(*)
    ----------
             0
    

      那么我们需要先把这个字段修改为非空字段:

    alter table T_WLF_RECORD modify ACCEPTINVITETIME not null;
    

      接着才能修改主键约束,约束无法直接修改,只能先删后插:

    alter table T_WLF_RECORD drop constraint SYS_C0018888;
    alter table T_WLF_RECORD add constraint PK_T_WLF_RECORD PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID, ACCEPTINVITETIME);
    

      最后把注释改下:

    comment on column T_WLF_RECORD.ACCEPTINVITETIME is '接受邀请时间(联合主键)';
    

      作为一个专业人员,我们应该把回滚语句也写好:

    alter table T_WLF_RECORD drop constraint PK_T_WLF_RECORD;
    alter table T_WLF_RECORD add constraint SYS_C0018888 PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID);
    alter table T_WLF_RECORD modify ACCEPTINVITETIME null;
    comment on column T_WLF_RECORD.ACCEPTINVITETIME is '接受邀请时间';
    

      最后总结下:约束的作用是保证数据的唯一性和完整性,比如主键约束你作为主键的字段不能为空,唯一约束你不能插入相同数据。具体区分如下:

      1、主键约束要求列值非空,而唯一键约束和唯一索引不要求列值非空,都不能有重复数据;

      2、主键约束和唯一键约束会隐式创建同名的唯一索引,当主键约束或者唯一键约束失效或被删掉时,隐式创建的唯一索引会被删除。

    展开全文
  • oracle主键定义、修改
  • db2、oracle修改主键

    2017-04-01 10:22:59
    1、db2修改主键 --第一步:增加列object_id alter table SCM_ORG_MLTY_MACRO_INDEX add object_id varchar(30);   --第二部:将历史数据的object_id填充为com_id update SCM_ORG_MLTY_MACRO_INDEX set object_...
  • oracle修改主键列类型

    千次阅读 2018-04-02 09:24:00
    --删主键 alter table tabA drop primary key cascade drop index; --允许空 alter table tabA modify id null; --更新空 update tabA set id = null; --改类型 alter table tabA modify id integer; --...
  • oracle主键插入重复数据

    千次阅读 2018-06-21 09:21:58
    发现oracle中已经设置了主键,但是还能插入重复数据,也是奇葩,后来发现主键虽然设置,但是没有启动,这才导致可以插入重复主键数据 解决办法 查询出没有启用主键的表 select a.constraint_name,b.column_...
  • Oracle主键保证了单条记录的唯一性,设置了主键的表在插入数据的时候比没有设置主键的表速度更快一些,在给某一张表设置或者更改主键之前,先检查下当前表时候已经设置了主键,可以按照如下步骤进行操作 1、查询某个...
  • 修改一个已经存有数据的表的主键,又不想影响原有数据。 通常有如下做法1.当 主键无命名create table t2 (id integer primary key,status varchar(10),last_modified date default sysdate);select * from t2;查看...
  • Oracle实现主键自增

    2019-01-23 10:04:14
    Oracle实现主键自增 因为oracle不存在mysql 的自增方法auto_increment,所以在Oracle中要实现字段的自增需要使用序列和触发器来实现字段的自增。关于oracle的安装和卸载可以看我上一篇文章。 第一步:创建序列 语法...
  • oracle设置主键自增长

    千次阅读 2018-08-31 16:48:20
    oracle主键自增长不像mysql的主键自增长设置那么方便,需要先设置序列,然后在设置触发器。此表的触发器可以复制以前类似触发器,然后对特定名字进行修改。 设置完触发器,不需要再在数据表中做相关设置,因为...
  • oracle 修改主键,新增字段为主键

    千次阅读 2014-07-25 18:05:37
     drop完所有外键约束后就可以对主键进行修改了  2:删除主键约束 alter table 表名 drop constraint 主键约束名  3:新增字段,并将该字段修改为主键 alter table 表名 add constraint 约...
  • Oracle没有自增主键这么一说,我们需要建立一个索引然后再设置一个触发器来添加自增主键。 创建一张表 create table t_( user_id number not null primary key, user_name varchar2(30), credits number, user_...
  • 继续昨天的折腾(Oracle修改主键约束),删掉主键约束后,发现唯一索引并未删掉。仔细看了下,主键约束跟唯一索引名称不一样,这说明是先创建了唯一索引,后创建的主键约束。我们来试验下: SQL> create unique ...
  • SYBASE & ORACLE自增主键

    千次阅读 2012-09-24 15:51:05
    SYBASE & ORACLE自增主键 SYBASE & ORACLE自增主键  1、SYBASE: SQL语句: CREATE TABLE test( phoneid int IDENTITY NOT NULL PRIMARY KEY , phoneNum varchar(20) null ) 关键
  • Oracle主键和外键

    2020-03-12 11:35:02
    在现实世界中,很多数据具有唯一的特性,例如身份证号码,在国家人口基本信息表中,一定不会存在多个人用同一个身份证号码的情况,再例如手机号码、QQ号码、银行帐号等等,还有学生管理系统,学生的年级、班级和学号...
  • Oracle主键自增长

    2018-04-16 20:58:00
    最近在学习Oracle和MySql,MySql有自动配置主键自增长auto_increment,这样在输入数据的时候可以不考虑主键的添加,方便对数据库的操作。  在Oracle中设置自增长首先用到sequence序列; 以创建学生表为例: ...
  • Oracle建表主键策略

    2014-07-20 12:01:53
    oracle建表设置主键自增   首先创建一张表   ? 1 2 3 4 5 6 create table member( memberId number primary key, memberMail varchar2...
  • Oracle主键

    2018-03-22 10:14:00
    在本教程中,您将学习如何使用Oracle PRIMARY KEY约束来管理表的主键主键介绍 主键是表中列的唯一标识表中的行的一列或多列的组合。 以下是设置列成为主键的规则: 主键列不能包含NULL值或空字符串。 主键...
  • oracle数据库中,主键并没有办法自动增长,无法使用insert对应的useGeneratedKeys和keyProperty属性自动返回增加的主键。 要实现自增需要修改 ID列为number类型,一下类型作为参考 oracle实现主键方式:原文链接...
  • oracle 设置主键修改列等sql语句(转载) 规则表---〉分区表 索引组织表 簇 修改列名 alter table 表明 rename column rename 老列名 to 新列名 添加 字段 alter table 表名 add(字段名 类型); ...
  • oracle表中更改主键

    万次阅读 2018-01-21 23:19:25
    一、数据表有主键但无主键约束名 先删除之前的主键,后添加主键 a. alter table 表名 drop primary key; b. alter table 表名 add primary key(想要更改的字段名称); 二、数据表有主键也有主键约束名 (1)...
  • Oracle主键和联合主键

    千次阅读 2019-04-03 08:11:59
    oracle数据库中,一张表中的每一行数据被称为一条记录。一条记录通常都是由多个字段所组成的。 例如,employees表的四行记录: 每一条记录都包含者若干个已经定义好的字段。同一个表的所有记录都有相同的字段...
  • oracle主键排序

    2010-11-29 12:07:36
    今天又遇到了个问题,我在应用中发现我们的一个web列表显示的特别慢,列表只是简单的将数据单表数据order 下输出,并且是对 create table T_ATTACKEVENT ( ATTEVNT_ID_N NUMBER not null, ATTEVNT_SIP_C ...
  • [img]...Oracle通过主键id删除2000条记录很慢,需要花费十二分钟。 解决过程: 1.首先查看SQL的执行计划,执行计划正常,cost只有4,用到了主键索引。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,821
精华内容 31,128
关键字:

oracle修改主键数据