我有一个带有以下键的Oracle表:ID,Name,DoB,Dept&文件编号。 ID字段是具有自动增量值的主键。
我希望编写一个触发器,这样当一行添加了Name,DoB&部门,FileNo字段应该得到值yyyy / xxxx,其中'yyyy'是预定义的字符串& 'xxxx'是ID字段中的值。
我该怎么做?
答案 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;
/