自动创建一列,这样每次输入新记录时它可以增加一列

时间:2018-08-14 09:10:34

标签: sql xml oracle

我想使AUT​​O_PROJECT_ID自动执行,因此每次在表中输入新记录时,都会给出一个自动ID。

         <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE Table PUBLIC "-//EAME/TABLE MAINTENANCE -               TABLE" "Table.dtd">

     <Table Name="STRAT_STRATEGY_PROJECTS"
   Confidentiality="Non-confidential"
   Connection="DXP3"
   Owner="USERINPUT"
   DisplayRows="30" > 

 <DownloadableFormat name="Excel"/>

     <Column Name="AUTO_PROJECT_ID"
      Label="Internal Project ID"
      Required="True"
      ReadOnly="True"
      Key="True" />      

2 个答案:

答案 0 :(得分:0)

如果是Oracle数据库(如标记所建议),则应在表上创建一个序列和一个触发器以插入序列值(如果仅在未为ID指定其他值的情况下使用序列值,则请使用触发器内的注释行):

CREATE SEQUENCE your_sequence
  MINVALUE 1
  START WITH 1
  INCREMENT BY 1
  CACHE 20;

CREATE OR REPLACE TRIGGER your_trigger
    BEFORE INSERT
    ON your_table
    FOR EACH ROW
BEGIN
    -- :NEW.id := NVL (:new.id, your_sequence.NEXTVAL);
    :NEW.id := your_sequence.NEXTVAL;
EXCEPTION
    WHEN OTHERS
    THEN
        NULL;
END;

答案 1 :(得分:0)

我不确定您的XML需要在其中扮演什么角色,但是从数据库方面,您可以像这样创建表:

create table strategy_projects
( auto_project_id  integer generated always as identity constraint strpr_pk primary key
, project_name     varchar2(10) );

(需要Oracle 12.1或更高版本-对于较旧的版本,可以在表中执行插入操作的任何位置使用触发器或显式使用序列。)