问题标签 [database-sequence]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1122 浏览

oracle - Oracle:创建 auto_increment 触发器时出现“解析失败”错误

我正在尝试为 Oracle 数据库的 ID 创建一个auto_increment 触发器
经过一番研究,我找到了一种使用序列插入前触发器的方法。

问题是,当我执行触发器时,出现以下错误:

解析失败:

CREATE OR REPLACE TRIGGER AUTO_INC_PDE_ITINERAIRE
BEFORE INSERT
ON PDE_ITINERAIRE
FOR EACH ROW
BEGIN
SELECT PDE_ITINERAIRE_ID_SEQUENCE.NEXTVAL
INTO


如果我使用以下命令:

它返回以下输出:

3号线| 10 号位 | PLS-00201:标识符“NEW.PDE_ITINERAIRE”必须声明
第 2 行 | 职位 03 | PL/SQL:忽略 SQL 语句
第 4 行 | 职位 03 | PL/SQL: ORA-00904 无效标识符


这是触发器的完整查询:

我真的不习惯 Oracle 的触发器,所以有人可以帮我找出触发器中的问题吗?

谢谢你的时间


编辑

我根据你的建议改变了触发器


我仍然有相同的错误输出。

更多信息:--
Oracle 是 v11。
--TOra 3 用作 IDE。

编辑 2

这是所要求的DDL:

CREATE TABLE "GEOMAP"."PDE_ITINERAIRE"
("ID_PDE_ITINERAIRE" NUMBER(11,0) NOT NULL ENABLE,
"NOM_ITINERAIRE" VARCHAR2(255) NOT NULL ENABLE,
"LONGUEUR" NUMBER(15,4),
"INSEE_DEPART" VARCHAR2(5 )、
“INSEE_ARRIVEE”VARCHAR2(5)、
“TYPE_ITINERAIRE”VARCHAR2(30)、
“TYPE_BALISAGE”VARCHAR2(30)、
“COULEUR_BALISAGE”VARCHAR2(55)、
“NOM_TOPO_GUIDE”VARCHAR2(255)、
“ANNEE_TOPO_GUIDE”VARCHAR2(4)、
“DATE_DERNIER_ENTRETIEN”日期,
“PERIODICITE_PREVUE”VARCHAR2(30),
“DATE_PROCHAIN_ENTRETIEN" DATE,
"ORGANISME_ENTRETIEN" VARCHAR2(60),
“OBSERVATIONS_ENTRETIEN”VARCHAR2(30)、
“CREATEUR”VARCHAR2(55)、
“COUT_TOTAL”VARCHAR2(50)、
“DATE_DECISION_CP”日期、
“SUBVENTION_ITINERAIRE”编号(8,2)、
“SUBVENTION_TOPO”编号(8,2)、
“ OBSERVATIONS_ADMIN" VARCHAR2(255),
"HEBERGEMENT" VARCHAR2(30),
"MONUMENTS" VARCHAR2(30),
"OBSERVATIONS_TOURISTIQUES" VARCHAR2(30),
"GEOMETRIE" "MDSYS"."SDO_GEOMETRY" ,
"COMMUNE_DEPART" VARCHAR2(55),
"COMMUNE_ARRIVEE" VARCHAR2(55),
"FICHIER_TOPO_GUIDE"VARCHAR2(255)
)

0 投票
0 回答
623 浏览

sql - 在触发函数中重置 PostgreSQL 序列

我有一个表counter_registry,其中有一列priority_number的默认值来自nextval('counter_registry_priority_number_seq'::regclass). 我的触发函数(在插入之前运行)有一个片段,当插入日期没有现有事务时重置序列:

当我在新的一天从客户端应用程序向表中插入一条新记录时,该priority_number列从重置前的序列的 nextval 获取其值,即使它已经被重置。随后的插入遵循新的重置序列,从 1 开始。

你如何正确重置序列,之后,当我第一次插入时,我会得到改变序列的下一个值?

0 投票
1 回答
160 浏览

sql - 为什么 CREATE FUNCTION 语句中不允许使用 NEXT VALUE?

我一直在尝试创建一个使用音序器返回新角色 ID 的函数。然而,似乎 DB2 不允许在 CREATE FUNCTION 语句中使用它。我很难理解他们为什么要这样做,他们唯一的文件是:

不能在以下位置指定 NEXT VALUE 和 PREVIOUS VALUE 表达式 (SQLSTATE 428F9):

是否有任何替代方法可以完成以下线程安全且不密集处理?

和功能:

我想到的最好的选择是有一个包含当前序列号的额外表。然后只需调整函数以使用它而不是定序器(我会在读取稳定性隔离级别下选择当前值以确保它是多线程安全的)。

0 投票
2 回答
1451 浏览

oracle - 在 SimpleJdbcInsert 对象中指定 Oracle 序列以从 Oracle 序列生成密钥

我使用 SimpleJdbcInsert 作为,

但它只对 ID 列抛出错误,其他列工作正常,我通过注释掉 ID 列确认。

我检查了我的 Oracle 序列,它工作正常。我检查了许多博客,但找不到使用 Oracle 序列和 SimpleJdbcInsert 的合适博客。

0 投票
1 回答
39 浏览

sql - 如何使用单个查询获取应用序列的所有序列和列

我想使用 PostgreSQL 中的单个查询来获取在数据库中应用该序列的所有序列、表和列。任何直接或间接的方法都是有帮助的。

0 投票
1 回答
87 浏览

sql - 如何为不同的频道创建不同的数据库序列?

我们有一个要求,即需要为不同的通道维护不同的数据库序列。EX:ABC-SQN1,XYZ-1,Sequence nos需要根据频道递增。有没有办法我们可以实现它。

谢谢

0 投票
1 回答
532 浏览

java - Postgres 9.5:从 mysql 迁移后自动递增

我正在将 MySQL 数据库移植到 PostgreSQL。到目前为止,我已经设法重建所有表和列并导入数据。但是,自动递增的唯一id字段尚未正确转换。我使用pgAdmin GUI更正了表中的一列。我想我可能不是第一个从 MySQL 转换到 Postgres 的人,所以可能有一种强大且经过测试的方法可以将其作为一项自动化任务来完成。如果有人能提供这么小的脚本,我将不胜感激。

但是,我想要一个经过测试的解决方案的主要原因是,我在添加序列并为相关列设置默认值后遇到了问题。序列的当前值已正确设置2069为最后一个表条目的值。当我运行我的程序并添加一行时,我得到了一个异常,它说2069已经分配了唯一值。当我再次运行程序时,它创建了新行,但自动递增的 id 是2071. 它跳过了2070

所以现在有3个可能的错误来源:

  • PostgreSQL 9.5 中的错误
  • Java JDBC 连接器中的错误
  • 我在自动增量字段和序列上犯了一个错误。

通过使用经过测试的解决方案,我可以消除最后一种可能性。

0 投票
2 回答
104 浏览

postgresql - 重置 postgres 序列以获取未使用的主键 ID

我正在使用 postgres 9.5。作为应用程序初始化的一部分,我在应用程序启动时使用随机 id 在数据库中进行了一些插入。像insert into student values(1,'abc')insert into student values(10,'xyz')。然后我开发了一些其他 API,它们以编程方式插入新行。有什么方法可以告诉 postgres 跳过已经使用的 id?

它试图占用已经使用的 ID。我注意到它没有更新序列以考虑初始插入

这是我创建表格的方式

0 投票
1 回答
514 浏览

sql - Oracle 在序列上更改 increment_by

有人可以向我解释为什么它会抛出“错误号码”吗?我试着到处放TO_NUMBER,我试过不加它,我试过不''加大号,我能想到的每一种组合,仍然是错误,对我来说根本没有任何意义。子查询有效,我检查了。

0 投票
1 回答
542 浏览

django - 带有遗留数据库的 Django - 如何使用数据库序列?

给定一个使用此 SQL 查询创建的数据库表:

我必须将它与 Django ORM 一起使用,所以我有运行inspectdb命令。它是自动生成的代码:

将其保存到应用程序models.py文件并运行迁移后,一切都很好。我可以像使用 ORM 创建数据库一样读取数据库。但是,在 Bill 表中创建行时存在问题。

比尔模型的简单形式:

问题是我无法检索使用 DB 序列生成的 ID。将id字段添加到表单将不起作用,因为我们必须使用代码生成它,然后作为参数传递。即使数据库将创建不同的 ID,如果没有原始查询,这些 ID 将无法检索。