Oracle数据库表插入
我有两个表:
create table Number( num number(5));
create table Entry(id number(3), name varchar(50));
每当我插入时,如何增加 Oracle 中 Number 表的 num 字段条目表中的某些内容?
I have two tables:
create table Number( num number(5));
create table Entry(id number(3), name varchar(50));
How can I increment the num field of Number table in Oracle whenever I insert something in the Entry table?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您应该使用
SEQUENCE
来代替。 “Number”表本质上是一个坏主意,因为当两个会话同时插入行时,每个会话只能看到 Number 表中未提交的值。这是你应该做的:
You should use a
SEQUENCE
instead. The "Number" table is an inherently bad idea, because when two sessions are inserting rows concurrently, each session only sees the uncommited value in the Number table.This is what you should do instead:
您是否希望 number.num 连续代表 Entry 表中的行数?如果是这样,您可以将其定义为视图:
Do you want number.num to continually represent the number of rows iin the Entry table? If so you could just define it as a view:
(您不需要触发器)。
序列返回一个唯一且递增的数值,但 Oracle 不保证它是无缝的。有时,当事务回滚时,列 id 的值将包含间隙。
(You don't need a trigger).
A sequence returns a unique and increasing number value but Oracle doesn't guarantuee that it is gapless. When sometimes transactions are rollbacked the values of column id will contain gaps.