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

时间:2019-07-15 12:00:05

标签: sql oracle11g network-programming oracle-sqldeveloper

我正在尝试创建一个触发器,以使用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;

有人可以指导我解决该问题吗?

1 个答案:

答案 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>