我正在使用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的值?
答案 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>