表中的自动递增字段

时间:2019-02-01 13:06:38

标签: oracle oracle11g

我正在使用oracle 11g xpress。我创建了一个简单的表。每当用户输入数据时,我希望该字段从10000开始递增1。您能帮忙吗?

我的桌子是这样的

CREATE TABLE PROG_TITLE 
(
PR_ID       INT         NOT NULL,
PR_TITLE    VARCHAR2(128)   NULL,
PR_INDEX    INT             NULL
);

我添加了主键:

ALTER TABLE PROG_TITLE 
ADD (CONSTRAINT mykey PRIMARY KEY (PR_ID));

顺序:

CREATE SEQUENCE PR_ID START WITH 10001 INCREMENT BY 1;

现在,我可以按如下所示插入值(并且可以正常工作):

INSERT INTO PROG_TITLE 
(PR_ID, PR_TITLE, PR_INDEX)
VALUES
(PR_ID.NEXTVAL, 'TEST1', 0);

我的问题是如何不使用NEXTVAL 来做到这一点?我该如何编辑查询以仅插入PR_TITLE和PR_INDEX的值?

1 个答案:

答案 0 :(得分:1)

您需要一个触发器

SQL> create or replace trigger trg_bi_pt
  2    before insert on prog_title
  3    for each row
  4  begin
  5    :new.pr_id := pr_id.nextval;
  6  end;
  7  /

Trigger created.

SQL> insert into prog_title (pr_title, pr_index)
  2  values
  3  ('test1', 0);

1 row created.

SQL> select * from prog_title;

     PR_ID PR_TITLE               PR_INDEX
---------- -------------------- ----------
     10001 test1                         0

SQL>