将表mytable加上一个id2字段,并使其成为主键之一,原主键名为:mytable_pk,字段为(id),步骤如下:
1.删除主键:
alter table mytable drop constraint mytable_pk cascade;
2.增加字段
alter table mytable add id2 varchar2(6);
3.设置新增字段初值
update mytable set id2='sx';
4.将新增字段改为非空
alter table mytable modify id2 not null;
5.增加主键约束
ALTER TABLE mytable ADD CONSTRAINT mytable_PK PRIMARY KEY (id2,id);
ERROR 位于第 1 行:
ORA-00955: 名称已由现有对象使用
解决办法:
由于原表可能存在同名索引,因此先执行以下语句:
drop index mytable_pk;
再执行
ALTER TABLE mytable ADD CONSTRAINT mytable_PK PRIMARY KEY (id2,id);即可
参考:http://forums.oracle.com/forums/thread.jspa?messageID=1935536�
分享到:
相关推荐
你要插入的表A里,有外键连接到另一个表B的主键,你在表A的外键列插入的值,在表B的主键列找不到就不能插入。 主要看两表中的数据是否一致,从表中要关联外键的字段中的数据必须包含在主表相关字段的数据内。 处理...
ORA-00904:字段名写错或是建表时最后一个字段有逗号 ORA-00907:缺少右括号 ORA-00911:无效字符 ORA-00917:缺少逗号 ORA-00918:未明确定义列 ORA-00922:丢失或无效的选项(表名等可能有空格) ORA-00923:未...
线程安全的,一个数据库对应一个Sessionfactory(一般一个应用程序对应一个SessionFactory就够了) 3.是一个很大的缓存,本身维护了一个可配置的二级缓存 4.用来构建Session对象 Configuration 1.启动和配置...
Oracle创建主键自增表,Oracle的基本操作+Oracle字段类型,命名规则和注意事项
select:从一个或多个表中检索一个或多个数据列。包含信息:想选择什么表,从什么地方选择。必须要有From子句。(最常用) 当从多张表里查询的时候,会产生笛卡尔积;可用条件过滤它。 当两个表有相同字段时必须加...
说明:Oracle中要删除一个用户,必须要具有dba的权限。而且不能删除当前用户,如果删除的用户有数据对象,那么必须加上关键字cascade。 用法:drop user 用户名 [cascade] 四、 用户权限与角色 1. 权限 Oracle中权限...
我们前面已经指出Oracle的Lob字段和一般类型的字段在操作上有一个明显的区别--那就是你必须首先通过Oracle的empty_blob()/empty_clob()初始化Lob字段,然后获取该字段的引用,通过这个引用更改其值。所以要完成对...
55. 怎么可以快速做一个和原表一样的备份表? create table new_table as (select * from old_table); 55. 怎么在sqlplus下修改procedure? select line,trim(text) t from user_source where name =’A’ order ...
如果是全部导入的话,就需要将原有的用户删除,这样此用户所拥有的数据就可以直接被删除了,否则在进导入时会下面的错误提示( ORACLE error 2291 encountered )那是因为与原有一些表,或主键出现冲突所致,所以再...
和其他的 PL/SQL 编辑工具不同,TOAD 允许在一个文件中操作多个数据库对象,可以编译一个对象、编译多个对象、编译到当前光标、从光标开始编译。在运行出现错误时,存储过程停止到有问题的语句。用户可以使用快捷...
§10.2 正确的主键字段的选择 113 §10.3 字段类型及长度的选择 113 §10.3.1 如果能用字符型就不要用数字型 114 §10.3.2 相互产生运算的数字型字段长度和精度要一致 114 §10.3.2 不要为了节省空间而将字段的长度...