如何创建一个自增长型的字段作为parimary key

[复制链接]
查看11 | 回复9 | 2006-4-17 13:46:34 | 显示全部楼层 |阅读模式
怎么写呢!好像很多资料都没说明这一点!
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
trigger +sequence
请用 自增一类关键字搜索论坛,加上俺的id也可以
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
最初由 biti_rainy 发布
[B]trigger +sequence
请用 自增一类关键字搜索论坛,加上俺的id也可以 [/B]

1找是找到了,但还是看不明白。麻烦你帮我写一下吧。
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
Faint
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
create table a
(
a1 int ,
a2 varchar2(6)
);
create SEQUENCE seq_a INCREMENT BY 1; -- 創建一個序列
create or replace TRIGGER a_insert -- 創建一個before insert的觸發器在表a上
before insert on a
for each row
declare
i_id integer;
begin
select seq_a.nextval into i_id from dual; --seq_a.nextval是該序列的下個值
:NEW.a1 := i_id;
end;
然後在insert時:
insert into a(a2) values('hello!'); -- 不對a1進行處理,觸發器會自動幫你處理
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
这么麻烦呀!还要用到触发器。。看来我又学到新东西了。
谢谢了!
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
不用触发器,insert into a ( a1,a2) values ( seq_a.nextval,'hello');也可以吧?
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
这个插入的过程显然要知道数据结构,如果不知道的话
我假设INSERT TO A VALUES(123,'ABC')
系统会覆盖掉123吗?
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
那就用视图把前一列隐藏起来
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
楼上的乱说
不需要象楼上的这么干,不管你对a1输入什么,都会被触发器干掉的。
在biti兄的代码里,begin段可以简化:
:new.a1 := seq_a.nextval
这样可以不使用变量,直接对a1赋值
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行