创建用于自动生成主键值的触发器时出现问题

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>