最近需要修改Oracle数据库,用到了一些常用的SQL语句,在此收集整理一下:
1. 增加列:
alter table table_name add column_name columntype;
2.删除列:
alter table table_name drop column column_name;
3.增加关键字PK(Primary Key):
alter table table_name add constraint table_name_key primary key(p1.p2.p3)
但是这种情况只是适合于没有设置主键之前,若数据库已经设置了主键,那么必须要按照以下步骤,否则会出错误:
--第一步:增加列key_no
alter table TB_ZHAOZHENLONG add key_no int;
--第二部:给key_no更新值
update TB_ZHAOZHENLONG set key_no =rownum;
commit;
--第三步:将key_no置为非空
alter table TB_ZHAOZHENLONG modify key_no int not null;
--第四步:查找主键
select constraint_name from user_constraints where constraint_type='P' and owner=user and table_name='TB_ZHAOZHENLONG' ;
--第五步:删除主键
ALTER TABLE TB_ZHAOZHENLONG DROP CONSTRAINT PK_TB_ZHAOZHENLONG;
--第六步:增加主键
ALTER TABLE TB_ZHAOZHENLONG ADD (CONSTRAINT PK_TB_ZHAOZHENLONG PRIMARY KEY(c_1,c_2,c_3);
呵呵,其实我只用到了最后两步,先删除主键,然后再增加主键,但是这里有个问题必须注意,如果你再次增加主键时用到的 Primary key的名字还是上次的,例如开始时 table_name_key,那么当你线删除这个主键之后,然后再次增加主键还是用的这个名字,则会出现以下报错:
ORA-00955:Name is already used by an existing object
可能是oracle有所限制吧,见http://www.expertsexchange.com/Database/Oracle/PL_SQL/Q_24269315.html
本文提供了Oracle数据库中主键修改的详细步骤,包括如何安全地删除原有主键并添加新的主键,适用于需要更改表结构的情况。
610

被折叠的 条评论
为什么被折叠?



