我正在尝试创建一个触发器,以使用Oracle SQL Developer上的序列自动生成主键值。
由于我是新来的,这对我来说似乎有些模糊,因此我尝试了各种在网上找到的东西,但未能创建我应该做的事情。我尝试了这段代码,但是我完全确定这是错误的。
CREATE OR REPLACE TRIGGER TRIGGER1
BEFORE INSERT ON Orders
FOR EACH ROW
WHEN (new.ID IS NULL)
BEGIN
:new.ID := Orders_SEQ.NEXTVAL;
END;
有人可以指导我解决该问题吗?
答案 0 :(得分:2)
我尝试了这段代码,但是我完全确定这是错误的。
为什么?完全正确。
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>