【问题标题】:How to write an Oracle trigger based on Auto incremented value?如何编写基于 Auto 递增值的 Oracle 触发器?
【发布时间】:2011-09-11 09:24:00
【问题描述】:
我有一个带有以下键的 Oracle 表:ID、名称、DoB、Dept 和 FileNo。 ID 字段是具有自动递增值的主键。
我希望编写一个触发器,以便在添加一行时添加 Name、DoB 和 Dept ,FileNo 字段应该得到值 yyyy/xxxx ,其中 'yyyy' 是预定义的字符串 & 'xxxx' 是值在 ID 字段中。
我该怎么做?
【问题讨论】:
标签:
oracle
triggers
auto-increment
【解决方案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;
/
【解决方案2】:
如果它总是带有一些前缀的 ID,那么它可能不应该是一个列。如果这是默认设置,那么设置:new.fileno := 'string'||:new.id 的触发器就足够了。
Oracle 没有自动递增功能,因此您可能指的是序列。如果你有一个触发器填充它,那么它可以进入同一个触发器。