【问题标题】:Auto increment field in table [duplicate]表中的自动增量字段[重复]
【发布时间】:2019-06-26 01:42:01
【问题描述】:

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

【问题讨论】:

    标签: oracle oracle11g


    【解决方案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>
    

    【讨论】:

    • 这正是我想要的!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2021-03-13
    • 1970-01-01
    • 2014-06-05
    相关资源
    最近更新 更多