问题标签 [nextval]

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 投票
1 回答
221 浏览

sql - 如何在 Postgres 中复制、更改和插入记录

在 PostgreSQL 数据库表中,我需要复制上个月的记录块,更改某些列中的值,并将更新的记录附加到表中。详细信息包括:

  • id配置nextval为自动创建唯一键值
  • 目标记录'200814'group_tag
  • 新记录需要'200911'group_tag
  • 其他几个字段需要更新,如SELECT

到目前为止我的脚本:

这会产生一个错误:

键值最多13008存在的记录。我本来希望nextval确定这一点并将id值从13009. 我试图简单地不包括id在认为该nextval函数会自动运行的语句中,但这也出错了。由于各自的错误,以下变体无效:

任何人都知道如何编写主语句以不生成重复键,或者如何告诉nextval从值开始13009

0 投票
0 回答
22 浏览

database - 如何插入具有从Postgres表中的最大值追赶的串行列的行

我有一个如下表:

在不更改表的属性的情况下,是否有任何干净的方法可以将新行插入到该表中(已经有值,所以“ID”不是从 1 开始)使得“ID”列不断增加?目前,如果我在表中插入一个新行Charlie(不指定 ID 列):

会变成

然后当我不断插入时,串行计数器不断增加。有什么办法可以从3开始吗?我试过currval(),nextval()lastval(),但它们似乎都从 1 开始,即使我已经有一个带有值的序列列。如果我必须最终更改此表的属性,我可以通过任何方式更改它,以便在插入新行时不必担心序列列?

0 投票
1 回答
25 浏览

sql - 有没有办法在父查询中添加一个字段,该字段将随着查询遍历子查询中生成的所有值而增加?

我想我有一个缺少真正主键的表,我需要在输出中创建一个。我无法修改表格。

我需要运行一个选择查询来生成一个值列表(list_A),然后获取这些值并查询它们以显示与它们相关的所有记录。从这些记录中,我执行另一个选择以提取一个现在可见的名为 list_B 的列表。从 list_B 中,我可以搜索它们以显示与原始列表 (list_A) 相关的所有记录,其中许多记录缺少 list_A 中的值,但仍需要计算。

到目前为止,这是我的过程:

  1. 我声明了一个名为“temp_key”的序列,它从 1 开始并以 1 递增。
  2. 我向父查询添加了一个名为“temp_key”的字段,以便它有望显示结果记录与原始 list_A 子查询的哪个元素相关。
  3. 我遇到了麻烦,因为我不知道如何使 temp_key 随着 list_A 子查询从列表中所有值的开头移动到结尾而增加。

就像现在一样,上面的查询不起作用,因为似乎没有办法使 temp_key 的当前值向上递增,因为它遍历最初从最低级别子查询 (list_A) 生成的列表中的值。

例如,list_A 中可能只有 10 个值。并且输出可能有 100 条记录,全部标记为 1 到 10,其中许多值在 list_A 字段中缺失值。但是它们仍然需要标记为 1 到 10,因为 list_B 的值连接了这两个集合。

0 投票
1 回答
99 浏览

java - java.sql.SQLIntegrityConstraintViolationException: ORA-00001

下面是我们用来将记录插入表中的 java 代码的一部分。

即使我使用SEQ.nextval,它仍然抛出以下错误:

java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反了唯一约束 (ACTTRK.AIR_ID_PK)。**

我该如何解决这个问题?

0 投票
1 回答
563 浏览

sql - 如何将“nextval('testing_thing_thing_id_seq'::regclass)”声明为 postgres 表“testing_thing”中列“thing_id”的默认值?

在我的 postgres db 中有一个名为 的表testing_thing,我可以看到(通过\d testing_thing在我的 psql 提示符下运行)它被定义为

我想删除它并按原样重新创建它,但我不知道如何重现

列的一部分thing_id

这是我放在一起创建表的查询:

它缺少什么?

0 投票
1 回答
47 浏览

snowflake-cloud-data-platform - 获取雪花序列 Nextval 的无效标识符

我在雪花中创建了一个序列 batch_id_seq。但是当我从外部雪花环境运行查询“select batch_id_seq.nextval”时,我收到以下错误:

SQL 编译错误:位置 7 处的错误行 1 无效标识符 'BATCH_ID_SEQ.NEXTVAL'

查询在雪花工作表中运行良好。谁能让我知道需要做些什么来解决这个问题。

0 投票
1 回答
27 浏览

snowflake-cloud-data-platform - 将带有 nextval 的新列添加到现有的 SNOWFLAKE 数据库表

我正在尝试将一个新列插入到雪花中的现有表中,其 nextval 类似于下面代码中的供应商ID(我在我的 stagingtable 上做了 get_ddl 以获得下面的代码)。我添加了一个新序列并使用supplierID 进行克隆,当我确实在同一张表上获得ddl 时,它只显示contactID.nextval 但不是像NUMBER(38,0) DEFAULT CLINIFYQA."ClinifyDB".ORGANIZATIONTYPEID.NEXTVAL 之类的东西

它仍然正确还是我做错了什么。

有人可以请教。]

0 投票
0 回答
18 浏览

postgresql - 当它们指向旧模式序列时,如何为新模式提供新序列?

过去,我将表格从复制old_schemanew_schema使用

create table if not exists {new_schema}.{lime_table} (like {old_schema}.{lime_table} including all);

复制/创建表结构和

insert into {new_schema}.{lime_table} (select * from {old_schema}.{lime_table});

用数据填充新表。现在,当我使用 pg_dump 将new_schema(其结构和数据)到 .sql 文件时

pg_dump.exe --host=<HOST> --port=<PORT> --username=<USER> -n old_schema --format=p --verbose <DATABASE> > C:\new_schema_dump.sql

我发现new_schema的表序列是指old_schema序列。例如,

在 DBeaver 中检查new_schema时,我发现它没有序列,确认new_schema依赖于old_schema序列。这有点令人惊讶,因为来自https://www.postgresql.org/docs/9.1/sql-createtable.html

创建完成后新表和原表完全解耦

我的问题是:如何安全地以表格序列开头的new_schema自己的序列中给出表格?我不想从 1 开始,因为这些表已经在使用中。nextvalold_schemanew_schema

到目前为止,我已经考虑过执行以下操作。

  1. new_schema在with中创建一个新序列create sequence new_schema.lime_settings_user_id_seq owned by new_schema.lime_settings_user.id

  2. 设置序列start with参数 withselect setval('new_schema.lime_settings_user_id_seq'::regclass, (SELECT last_value + 1 FROM old_schema.lime_settings_user_id_seq))因为这不能start with在语句的子句中动态完成create sequence

  3. 用 .为new_schema' 表提供新的序列alter table 'new_schema.lime_settings_user alter column id set default nextval('new_schema.lime_settings_user_id_seq'::regclass)

有一个更好的方法吗?

0 投票
1 回答
25 浏览

oracle - 为什么有些用户而不是其他用户得到 ORA-01400: cannot insert NULL into primary key

编辑:我已经用实际的 SQL 替换了通用 SQL。

我知道如何解决它。我只是想知道为什么它适用于某些开发人员机器而不是其他机器。

我的解决方法是

但是为什么在所有开发人员机器上都没有必要呢?他们都有自己的架构,但我的脚本为他们创建了这个表。

0 投票
1 回答
17 浏览

oracle - Oracle插入不同位置的属性

如果我们根据属性位置以不同的顺序放置属性,请告诉我 Oracle 插入语句是否有效。我无法在开发环境中进行测试,因此在直接推动 PROD 更改之前需要专家意见。请帮忙。

我有以下表格:

表A - col1,col2,col3,col4,col5

表 B - col1、col2、col4、col5

我需要从 tableB 中选择不同的值并通过向 tableA 添加序列号来插入到 tableA 中。

由于不同的序列号在插入语句中不能一起工作,我正在使用外部选择语句。

请让我知道以下 2 个选项中的哪一个有效???如果两者都不起作用,那么也请提供您的建议。

选项 1 - 在最后的外部 select 语句中添加 nextval 并将 col3 作为插入中的最后一个位置

insert into tableA ( col1, col2, col4, col5, col3 ) select col1, col2, col4, col5, my_seq.nextval as col3 from ( select distinct col1, col2, col4, col5 from tableB );

选项 2- 在外部 select 语句中以相同的顺序添加 nextval 并将 col3 保持在插入中的相同位置

insert into tableA ( col1, col2, col3, col4, col5 ) select col1, col2, my_seq.nextval as col3, col4, col5 from ( select distinct col1, col2, col4, col5 from tableB );

提前致谢!!