请问大侠:怎样在数据库中产生一个唯一列值!
怎样在数据库中产生一个唯一列值!
我打算向数据库中批量导入数据,现在需要一个唯一主键列,怎么完成
问题点数:0、回复次数:10Top
1 楼welyngj(无爱)回复于 2004-05-04 15:34:15 得分 0
序列用来自动产生唯一ID。
如果在触发器中得用序列,在插入时可以不管ID,有触发器自动执行。
如果用语句插入也行,就像 insert into table_name(id,name,...) values(seq_name.nextval,'name',..);
一般就这两种用法:
1.创建sequence
create sequence seq_name
minvalue 1
maxvalue 999999999999999999
start with 1
increment by 1
cache 20;
可以直接在插入时调用seq_name.nextval;
如insert into table_name(proid) values(seq_name.nextval);
2.创建触发器(同时要创建sequence):
create or replace trigger trg_name
before insert on table_name
for each row
begin
select seq_name.nextval into :new.proid from dual;
end;
/
Top
2 楼baojianjun(包子)回复于 2004-05-04 15:57:08 得分 0
http://expert.csdn.net/Expert/topic/3029/3029266.xml?temp=.9723169Top
3 楼xiaohei()回复于 2004-05-04 16:24:03 得分 0
大侠,除了序列有没有其他方法。Top
4 楼welyngj(无爱)回复于 2004-05-04 16:26:40 得分 0
我还没有发现其他的方法。Top
5 楼drabit(square)回复于 2004-05-04 19:15:07 得分 0
用rownum,不过要导入完成以后做updateTop
6 楼lvjack(追逐梦想)回复于 2004-05-05 10:18:31 得分 0
除了序列可以自己在语句中生成唯一id再insert
或者根据你要导入的数据,选择其中一个字段作主键列,先建表再导入Top
7 楼snowy_howe(天下有雪)回复于 2004-05-05 10:23:41 得分 0
以上所说,根据你要导入的数据,如果实在找不出任何组合可以做主键,
不妨自己设置一个字段,该字段没有实在意义,就是标识唯一记录。Top
8 楼skystar99047(天星)回复于 2004-05-05 17:45:14 得分 0
不知道你想要完成什么功能要用到唯一ID,导入数据一定要吗?还可以考虑一下rownum的用法。Top
9 楼baojianjun(包子)回复于 2004-05-05 18:25:29 得分 0
樓主為什麼不想用序列呢?是不是有什麼特殊的要求?Top
10 楼beckhambobo(beckham)回复于 2004-05-06 00:12:11 得分 0
oracle就是为唯一而设计出序列对象Top




