如何编写基于 Auto 递增值的 Oracle 触发器?
Posted
技术标签:
【中文标题】如何编写基于 Auto 递增值的 Oracle 触发器?【英文标题】:How to write an Oracle trigger based on Auto incremented value? 【发布时间】:2011-09-11 09:24:00 【问题描述】:我有一个带有以下键的 Oracle 表:ID、名称、DoB、Dept 和 FileNo。 ID 字段是具有自动递增值的主键。
我希望编写一个触发器,以便在添加一行时添加 Name、DoB 和 Dept ,FileNo 字段应该得到值 yyyy/xxxx ,其中 'yyyy' 是预定义的字符串 & 'xxxx' 是值在 ID 字段中。
我该怎么做?
【问题讨论】:
也许你需要一个简单的视图或物化视图。 【参考方案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 没有自动递增功能,因此您可能指的是序列。如果你有一个触发器填充它,那么它可以进入同一个触发器。
【讨论】:
以上是关于如何编写基于 Auto 递增值的 Oracle 触发器?的主要内容,如果未能解决你的问题,请参考以下文章