如何编写一个基于自动递增值的Oracle触发器?
我有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果它始终是带有某个前缀的 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.
您需要一个序列来实现自动递增值:
以及表上的触发器
You need a sequence to implement an Auto Incremented value:
and a trigger on a table