ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » Oracle开发 » 主键的问题

标题: 主键的问题
离线 heman
初级会员



精华贴数 0
个人空间 0
技术积分 78 (20091)
社区积分 0 (50510)
注册日期 2001-12-23
论坛徽章:0
      
      

发表于 2002-1-24 20:51 
主键的问题


我现在已经使用一张表,现在已经不能再进行删除表操作,我想在这个表上加一个主关键字,有什么办法解决呀!各位大侠,请帮忙!


只看该作者    顶部
在线/呼叫 玉面飞龙
斧头帮帮主


精华贴数 1
个人空间 0
技术积分 10305 (118)
社区积分 3552 (395)
注册日期 2002-1-20
论坛徽章:24
现任管理团队成员ITPUB元老ITPUB北京九华山庄2008年会纪念徽章参与2007年甲骨文全球大会(中国上海)纪念管理团队2006纪念徽章蓝锆石
会员2007贡献徽章会员2006贡献徽章授权会员生肖徽章2007版:龙生肖徽章2007版:蛇生肖徽章2007版:龙

发表于 2002-1-24 21:02 
照猫画虎

alter table sale add constraint Sale_pk primary key(sale_id) using index storage(initial 1M next 1M pctincrease 0) tablespace dw_idx21 unrecoverable;


__________________
http://www.yumianfeilong.com 包括 oracle技术,投资理财,财经评论等~

欢迎访问
只看该作者    顶部
在线/呼叫 biti_rainy
人生就是如此



精华贴数 38
个人空间 0
技术积分 111199 (4)
社区积分 11832 (132)
注册日期 2001-12-12
论坛徽章:41
现任管理团队成员ITPUB长老会成员ITPUB元老年度论坛发贴之星年度论坛发贴之星ITPUB北京九华山庄2008年会纪念徽章
管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章

发表于 2002-1-24 21:03 
不明白

要建的主关键字上有重复记录么?


__________________
眼界决定边界,态度决定高度
blog:
人生就是如此
只看该作者    顶部
离线 graydolphin
中级会员



精华贴数 0
个人空间 0
技术积分 486 (4063)
社区积分 3 (19636)
注册日期 2001-9-24
论坛徽章:1
授权会员     
      

发表于 2002-1-25 17:42 
Use this one

1.
On the table you want to add primary key,
Alter table tname add constraints pk_tname primary key (col1) disable;
Here 'disable' ensures that the primary key constraint will be created but in a disable status. Thus no error will be reported on primary key conflict.
2.
run $oracle_home\rdbms\admin\utlexcpt.sql to create table 'exceptions'

3.
alter table tname enable primary key exceptions into exceptions
This will record all the conflict rows' rowid into table 'exceptions'
4.
select * from tname where rowid in (select row_id from exceptions)
This statement will return all the rows having conflict.


只看该作者    顶部
离线 yangtingkun
版主


精华贴数 12
个人空间 24196
技术积分 47673 (12)
社区积分 3185 (444)
注册日期 2001-12-29
论坛徽章:109
现任管理团队成员NBA季后赛大富翁2008北京奥运纪念徽章:足球2008北京奥运纪念徽章:羽毛球2008北京奥运纪念徽章:跳水2008北京奥运纪念徽章:拳击
2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:皮划艇静水2008北京奥运纪念徽章:体操2008北京奥运纪念徽章:曲棍球2008北京奥运纪念徽章:篮球2008北京奥运纪念徽章:举重

发表于 2002-1-25 17:49 
你的意思是不是在已有的表上增加一个新的字段,且这个字段作为这张表的主键。


__________________
学习ORACLE最大的障碍是什么——浮躁

http://yangtingkun.itpub.net

个人BLOG文章索引:http://www.itpub.net/showthread.php?s=&threadid=699527

11g的一点研究:http://www.itpub.net/852861.html
只看该作者    顶部
离线 heman
初级会员



精华贴数 0
个人空间 0
技术积分 78 (20091)
社区积分 0 (50510)
注册日期 2001-12-23
论坛徽章:0
      
      

发表于 2002-1-25 18:40 
对呀,我想以后每新增一条记录ORACLE系统给他赋一个主键值!
可以吗?谢谢!


只看该作者    顶部
离线 graydolphin
中级会员



精华贴数 0
个人空间 0
技术积分 486 (4063)
社区积分 3 (19636)
注册日期 2001-9-24
论坛徽章:1
授权会员     
      

发表于 2002-1-26 18:38 
TRY THIS

1.
ALTER TABLE TNAME ADD (PK_NO NUMBER(20));
2.
UPDATE TNAME SET PK_NO = ROWNUM;
3.
ALTER TABLE TNAME ADD CONSTRAINTS PK_TNAME PRIMARY KEY (PK_NO);
4.
CREATE SEQUENCE SEQ_PK_NO;
5.
create or replace trigger t_pk_test
before insert on test
for each row
begin
   if ( :new.pk_no is null ) then
      select seq_test.nextval into :new.pk_no from dual;
   end if;
end;


只看该作者    顶部
离线 heman
初级会员



精华贴数 0
个人空间 0
技术积分 78 (20091)
社区积分 0 (50510)
注册日期 2001-12-23
论坛徽章:0
      
      

发表于 2002-1-27 13:03 
谢谢!谢谢!
已经解决!


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问