标签: sequence

在 PostgreSQL 中获取下一个 bigserial 值

假设我有一个带id BIGSERIAL列的表。我刚刚开始了一个新的会话。我想知道id我插入的下一行是什么。我怎么能说这个?

我不能简单地SELECT MAX(id) FROM my_table(如果没有找到就返回 1),因为如果我之前删除了东西,下一个id不会是 1,而是会更高。

我已经看过其他使用currval()和的答案nextval()。除非我在当前会话中插入,否则它们不起作用......而且我不想插入一行并查看我得到的 ID,哈哈。

我将要锁定表并在客户端上从 Python 脚本插入大量行,该脚本也在字典中跟踪行 ID。行 ID 必须匹配,所以我需要知道第一个是什么。我很惊讶没有其他人正在处理这种情况。

编辑:除非我在当前会话中插入,否则我对这些功能不起作用的看法是错误的,但请参阅下面的评论。

postgresql sequence

2
推荐指数
1
解决办法
2042
查看次数

如何修复所有重复的键值违反唯一约束

我有一个用 Django 应用程序创建的 Postgres 数据库。当我转移它时,它从未重新索引任何内容,并且在尝试执行此操作时出现错误。似乎有很多表都有这个问题。有没有办法可以使用我在另一个问题中找到的这段代码并将其用于所有序列和表格?

SELECT setval('tablename_id_seq', (SELECT MAX(id) FROM tablename)+1)
Run Code Online (Sandbox Code Playgroud)

postgresql sequence identity django

1
推荐指数
1
解决办法
1万
查看次数

顶部等待中的 XE_SERVICES_RWLOCK

上一个版本发布后,我们开始面临一些不寻常的等待。XE_SERVICES_RWLOCK等待开始出现在我们的顶级等待中。调查显示这种等待发生在插入我们的主 OLTP 表期间。我们在这部分中唯一改变的是我们通过插入序列来改变插入到标识列中。实际上我们还没有从列中删除身份选项。相反,我们只是在做

SET IDENTITY_INSERT ON

INSERT STATEMENT HERE

SET IDENTITY INSERT OFF
Run Code Online (Sandbox Code Playgroud)

我们没有删除身份属性的原因是它需要重建表,但我们的表很大,需要几个小时的停机时间。问题是什么是XE_SERVICES_RWLOCK 等待,它们是否会出现在大量语句的情况下SET IDENTITY_INSERT ON|OFF,或者根情况是否可以使用sequence而不是identity

我们sp_WhoIsActive每 30 秒运行一次并将结果保存到表中以便以后调查问题。您可以从所附表格中看到结果。

在此输入图像描述

我们使用的是 SQL Server 2016 SP2。

sequence identity sql-server-2016 waits

0
推荐指数
1
解决办法
196
查看次数

在 Postgres 中,SEQUENCE 和 SERIAL 之间的关系是什么?

Postgres 能够定义SERIAL数据类型和SEQUENCE,但它们似乎在功能上重叠。主要区别是什么?

postgresql sequence

-3
推荐指数
1
解决办法
215
查看次数

SQL Server 2012 中序列的优点是什么?

我将 SQL Server 2008 R2 升级到 SQL Server 2012,我注意到添加了一个新功能:Sequence.

我不知道有identity属性时添加序列的原因。

有人可以详细说明此功能的用途吗?

sql-server sequence sql-server-2012

-6
推荐指数
1
解决办法
1317
查看次数