如何根据Auto递增值编写Oracle触发器?

时间:2011-06-09 04:05:48

标签: oracle triggers auto-increment

我有一个带有以下键的Oracle表:ID,Name,DoB,Dept&文件编号。 ID字段是具有自动增量值的主键。

我希望编写一个触发器,这样当一行添加了Name,DoB&部门,FileNo字段应该得到值yyyy / xxxx,其中'yyyy'是预定义的字符串& 'xxxx'是ID字段中的值。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

如果它总是带有一些前缀的ID,那么它可能不应该是一列。如果这是默认值,那么设置:new.fileno := 'string'||:new.id的触发器就足够了。

Oracle没有自动增量,所以你可能意味着一个序列。如果你有一个触发器填充,那么这可以在同一个触发器中。

答案 1 :(得分:1)

您需要一个序列来实现自动增量值:

create sequence seq_file_id start with 1 increment by 1;

和表格上的触发器

CREATE TRIGGER file_trg 
   BEFORE insert 
   ON file_table 
   FOR EACH ROW
BEGIN
      SELECT seq_file_id.NEXTVAL INTO :new.id FROM dual;
      :NEW.fileno := 'yyyy' || :new.id;

END;
/