VS2008调用触发器 使oracle 的主键自增

冬冬V 2009-12-28 02:10:48
我以前是用Sql server 的 在创建表的时候 对要自增的字段 直接就 identity,
现在换了公司 用oracle了 但这个自增我没用明白, 后来查了下 说要先创建序列 然后触发器 在调用 可我还是没弄明白

所以麻烦各位GG,JJ了 帮个忙
怎样创建序列
怎样创建触发器 并能调用 序列
怎样在VS2008中 调用触发器
谢谢了
最好详细点...谢谢
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazylaa 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 runbaobao88 的回复:]
方式一:用触发器
SQL> create sequence sq1 start with 1;

Sequence created.
SQL> create table t_1(f1 number(10), f2 number(10));

Table created.
SQL> create or replace trigger tr_t_1
  2    before insert on t_1
  3    for each row
  4  begin
  5      select sq1.nextval into :new.f1 from dual;
  6  end;
  7  /

Trigger created.

SQL> select * from t_1;

no rows selected

SQL> insert into t_1(f2) values(10);

1 row created.

SQL> select * from t_1;

        F1        F2
---------- ----------
        1        10

SQL> insert into t_1(f2) values(20);

1 row created.

SQL> select * from t_1;

        F1        F2
---------- ----------
        1        10
        2        20

方式二:不用触发器
SQL> create sequence sq2 start with 1;

Sequence created.

SQL> create table t_2(f1 number(10), f2 number(10));

Table created.
SQL> insert into t_2 values(sq2.nextval, 10);

1 row created.

SQL> insert into t_2 values(sq2.nextval, 20);

1 row created.

SQL> select * from t_2;

        F1        F2
---------- ----------
        1        10
        2        20



[/Quote]

up
runbaobao88 2009-12-28
  • 打赏
  • 举报
回复
触发器不需要你调用,ORACLE会触发它的。
runbaobao88 2009-12-28
  • 打赏
  • 举报
回复
方式一:用触发器
SQL> create sequence sq1 start with 1;

Sequence created.
SQL> create table t_1(f1 number(10), f2 number(10));

Table created.
SQL> create or replace trigger tr_t_1
2 before insert on t_1
3 for each row
4 begin
5 select sq1.nextval into :new.f1 from dual;
6 end;
7 /

Trigger created.

SQL> select * from t_1;

no rows selected

SQL> insert into t_1(f2) values(10);

1 row created.

SQL> select * from t_1;

F1 F2
---------- ----------
1 10

SQL> insert into t_1(f2) values(20);

1 row created.

SQL> select * from t_1;

F1 F2
---------- ----------
1 10
2 20

方式二:不用触发器
SQL> create sequence sq2 start with 1;

Sequence created.

SQL> create table t_2(f1 number(10), f2 number(10));

Table created.
SQL> insert into t_2 values(sq2.nextval, 10);

1 row created.

SQL> insert into t_2 values(sq2.nextval, 20);

1 row created.

SQL> select * from t_2;

F1 F2
---------- ----------
1 10
2 20


3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧