创建用于自动生成主键值的触发器时出现问题
Problem while creating a trigger for automatic generation of primary key values
我正在尝试使用 Oracle SQL 开发人员上的序列创建用于自动生成主键值的触发器。
由于我是新手,这对我来说听起来有点模糊,所以我尝试了在网上找到的各种东西,但未能创建我应该做的事情。我试过这段代码,但我完全确定它是错误的。
CREATE OR REPLACE TRIGGER TRIGGER1
BEFORE INSERT ON Orders
FOR EACH ROW
WHEN (new.ID IS NULL)
BEGIN
:new.ID := Orders_SEQ.NEXTVAL;
END;
有人可以指导我解决这个问题吗?
I tried this piece of code but I am completely sure that it is wrong.
为什么?完全正确。
SQL> create table orders (id number);
Table created.
SQL> create sequence orders_seq;
Sequence created.
SQL> CREATE OR REPLACE TRIGGER TRIGGER1
2 BEFORE INSERT ON Orders
3 FOR EACH ROW
4 WHEN (new.ID IS NULL)
5 BEGIN
6 :new.ID := Orders_SEQ.NEXTVAL;
7 END;
8 /
Trigger created.
SQL> insert into orders (id) values (null);
1 row created.
SQL> select * from orders;
ID
----------
1
SQL>
我正在尝试使用 Oracle SQL 开发人员上的序列创建用于自动生成主键值的触发器。
由于我是新手,这对我来说听起来有点模糊,所以我尝试了在网上找到的各种东西,但未能创建我应该做的事情。我试过这段代码,但我完全确定它是错误的。
CREATE OR REPLACE TRIGGER TRIGGER1
BEFORE INSERT ON Orders
FOR EACH ROW
WHEN (new.ID IS NULL)
BEGIN
:new.ID := Orders_SEQ.NEXTVAL;
END;
有人可以指导我解决这个问题吗?
I tried this piece of code but I am completely sure that it is wrong.
为什么?完全正确。
SQL> create table orders (id number);
Table created.
SQL> create sequence orders_seq;
Sequence created.
SQL> CREATE OR REPLACE TRIGGER TRIGGER1
2 BEFORE INSERT ON Orders
3 FOR EACH ROW
4 WHEN (new.ID IS NULL)
5 BEGIN
6 :new.ID := Orders_SEQ.NEXTVAL;
7 END;
8 /
Trigger created.
SQL> insert into orders (id) values (null);
1 row created.
SQL> select * from orders;
ID
----------
1
SQL>