分享

通过SQL语句设置或删除主键

 好闺女瑶瑶 2017-06-14

      最近工作需要在程序中对Access数据库的一个表去除主键,然后执行一些操作。完成后再添加主键。可以通过这样的SQL语句完成

 

去除主键

            Alter table  表名  Drop Constraint PrimaryKey

            解释一下,上面的 PrimaryKey 是完整性约束条件的名字,Access数据库为主键约束默认取名PrimaryKey。当然如果主键约束被自己取了别的名字,这里也要做相应的改变了。

 

添加主键

            Alter table 表名 Add  Constraint  PrimaryKey  Primary  Key (主键字段名)

            解释一下,第一个PrimaryKey和上面的一样,是自己为主键完整性约束取的名字。 后面的 Primary Key (主键字段)当然就是主键约束短语了,除了Primary Key之外,还可以是Foreign key 或 Check 短语。

       具体的可以查查CONSTRAINT的用法,它用来添加完整性约束条件,并且指定该约束条件的名字(这样就方便以后删除这个约束条件)。Constrain也可以用在Create语句中,在建表时就用它来设置 PRIMARY KEY, FOREIGN KEY, CHECK 等约束。

例:--用户收益表修改主键
Alter table  T_FUP_USRPROFITS  Drop Constraint PK_T_FUP_USRPROFITS;
drop index PK_T_FUP_USRPROFITS;
create unique index PK_T_FUP_USRPROFITS on T_FUP_USRPROFITS (USR_NO, FUND_CODE, INCOME_DATE,TRADEACCO) parallel 4;
alter index PK_T_FUP_USRPROFITS noparallel;
Alter table T_FUP_USRPROFITS Add  Constraint  PK_T_FUP_USRPROFITS  Primary  Key (USR_NO,FUND_CODE,INCOME_DATE,TRADEACCO);

修改主键:

---新增字段

alter table T_FUP_USER_INVERTOR add SER_NO VARCHAR2(20 BYTE);

comment on column T_FUP_USER_INVERTOR.SER_NO is '流水号';

alter table T_FUP_USER_INVERTOR add WBF_USER_ID VARCHAR2(50 BYTE);

comment on column T_FUP_USER_INVERTOR.WBF_USER_ID is '沃百富id';

---补充新字段

update T_FUP_USER_INVERTOR r set r.SER_NO = r.USER_NO || (SELECT TRUNC(dbms_random.value*power(10,(20-length(r.USER_NO)))) FROM dual);

---修改主键

Alter table  T_FUP_USER_INVERTOR  Drop Constraint T_FUP_USER_INVERTOR_PK;

drop index T_FUP_USER_INVERTOR_PK;

create unique index T_FUP_USER_INVERTOR_PK on T_FUP_USER_INVERTOR (SER_NO) parallel 1;

alter index T_FUP_USER_INVERTOR_PK noparallel;

Alter table T_FUP_USER_INVERTOR Add  Constraint  T_FUP_USER_INVERTOR_PK  Primary  Key (SER_NO);

---修改USER_NO可空

alter table T_FUP_USER_INVERTOR modify USER_NO null;


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多