如何编写一个基于自动递增值的Oracle触发器?

发布于 2024-11-14 08:17:51 字数 191 浏览 4 评论 0原文

我有一个 Oracle 表,其中包含以下键:ID、名称、DoB、部门和部门。文件号ID 字段是具有自动递增值的主键。

我希望编写一个触发器,以便当添加一行时添加名称、DoB 和Dept 中,FileNo 字段应获取值 yyyy/xxxx,其中 'yyyy' 是预定义的字符串 & “xxxx”是 ID 字段中的值。

我该怎么做?

I have an Oracle Table with the following keys: ID, Name, DoB, Dept & FileNo. The ID field is the primary Key with an Auto Incremented value.

I wish to write a trigger, so that when a row is added with the Name, DoB & Dept , the FileNo field should get the value yyyy/xxxx where 'yyyy' is a predefined string & 'xxxx' is the value in ID field.

How do I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

丿*梦醉红颜 2024-11-21 08:17:51

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

Oracle 没有自动增量,所以你可能指的是一个序列。如果您有一个触发器填充该触发器,那么这可以放入同一个触发器中。

If it will always be the ID with some prefix, then it probably shouldn't be a column. If that is the default, then a trigger that sets :new.fileno := 'string'||:new.id should suffice.

Oracle doesn't have auto increment, so you probably mean a sequence. If you have a trigger populating that, then this can go in the same trigger.

辞旧 2024-11-21 08:17:51

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

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

You need a sequence to implement an Auto Incremented value:

create sequence seq_file_id start with 1 increment by 1;

and a trigger on a table

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;
/
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文