2011-06-09 66 views
2

我有一个Oracle表格,其中包含以下关键字:ID,名称,DoB,部门& FileNo。 ID字段是具有自动增量值的主键。如何根据自动递增值编写Oracle触发器?

我希望写一个触发器,这样,当添加了姓名,出生日期&系一排,FileNo在现场应该得到的价值为yyyy/XXXX,其中“YYYY”是一个预定义的字符串&“XXXX”是ID字段中的值。

我该怎么做?

+0

也许你需要一个简单的视图或物化视图

create sequence seq_file_id start with 1 increment by 1; 

和触发器。 – 2011-06-09 05:44:18

回答

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; 
/
+0

我将你标记为已接受,因为你给了我完整的代码。 – 2011-06-09 15:29:38

3

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

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