最近工作需要在程序中对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_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; |
|