如何在Oracle PL/SQL中实现自动递增的序列值?
在Oracle数据库表中,如何使用PL/SQL(例如键值或id类型的列)自动递增序列值 其中包括一个关于根据您对给定模式中所有相关表的预计增长的了解来调整表资源大小的讨论。芝加哥有多少钢琴调谐器?可能比这个城市的总人口还少……:)等等如何在Oracle PL/SQL中实现自动递增的序列值?,sql,plsql,oracle10g,oracle-xe,Sql,Plsql,Oracle10g,Oracle Xe,在Oracle数据库表中,如何使用PL/SQL(例如键值或id类型的列)自动递增序列值 其中包括一个关于根据您对给定模式中所有相关表的预计增长的了解来调整表资源大小的讨论。芝加哥有多少钢琴调谐器?可能比这个城市的总人口还少……:)等等 Know your data. 我该怎么做?继续阅读。使用数据库触发器自动增加列值 一种可能的方法是使用数据库触发器。通过实现序列类型的数据库对象,确保值的唯一性 在上面的示例中,表FUNDRAISER有一个主键值的关联序列,称为FUNDRAISER\u SE
Know your data.
我该怎么做?继续阅读。使用数据库触发器自动增加列值
一种可能的方法是使用数据库触发器。通过实现序列类型的数据库对象,确保值的唯一性
在上面的示例中,表FUNDRAISER
有一个主键值的关联序列,称为FUNDRAISER\u SEQ
零件列表:示例所需的内容。
这是一个较旧的代码示例,但它是
SELECT FROM ... INTO DUAL
构造是我们对旧版本的Oracle数据库所做的。发布11g更改,以便序列增量可以直接分配给PL/SQL变量或SQL语句调用。两者都会起作用
挑战自己,找出修改后的PL/SQL可能是什么样子
CREATE OR REPLACE TRIGGER "BI_FUND_PEOPLE"
before insert on "FUND_PEOPLE"
for each row
begin
if :NEW."PERSON_ID" is null then
:NEW."PERSON_ID" := "FUND_PEOPLE_SEQ".nextval;
end if;
end;
符号为:
FUND_ID
是insert语句中忽略的列。每个序列的起始值为20。对SEQ.NEXTVAL
值的调用会按序列声明中标识的数量递增序列
浅谈序列规模
如果指定的序列没有最大值,系统将指定数据库处理的最大可能整数,长度为20+位
现在我们要如何处理包含记录的表
数量级为二十个或二十个以上的数量级:
“999999999999999999999999999”
Hmmmm…我听说过“编码中的防御”,但对于大多数应用程序来说,这是。。。可以辩护吗
考虑一下我在谷歌代码上使用过的原始项目设计:
这是系统中每个实体之间记录计数的粗略关系
我设置的模式。这两个圆圈是成比例的度量
它们计算或聚合的值。考虑到数据
在这些情况下,每个记录计数的相对大小是多少
看一下这些数据就知道我的估计了。这个项目一开始只是一张记录筹资活动的数据表。希望您能从中获得信息和启发
UI和我的测试工作是在Oracle托管的一个公共演示站点上进行的,该站点位于这是关于sequence的教程吗?您好。谢谢你的评论。我把摘要放在上面。本教程只是为这个想法添加了一点背景知识。让我知道你的想法。
CREATE OR REPLACE TRIGGER "BI_FUND_PEOPLE"
before insert on "FUND_PEOPLE"
for each row
begin
if :NEW."PERSON_ID" is null then
:NEW."PERSON_ID" := "FUND_PEOPLE_SEQ".nextval;
end if;
end;