gpt4 book ai didi

sql - pg_get_serial_sequence 什么都不返回(空字符串)

转载 作者:行者123 更新时间:2023-11-29 12:50:38 25 4
gpt4 key购买 nike

我有许多带有 auto-inc PK 的表,其中大多数 pg_get_serial_sequence 返回(如我所料)auto-inc 后面的序列名称,即 SERIAL PK。但是对于一个表 pg_get_serial_sequence 只返回一个空字符串?!

现在...我为这些表生成了 CREATE 脚本,但我没有看到这些表的创建脚本之间有任何原则区别(pg_get_serial_sequence 工作正常的那些,以及它不起作用,即它返回一个空字符串)。

两者都有一些序列支持的 SERIAL PK 列。所以情况对我来说似乎是一样的。然而,对于我的一个表,pg_get_serial_sequence 不返回该支持序列的名称,它只返回空字符串。

这个特定的表可能缺少什么?

我需要做一些特别的事情来将给定序列设置为串行序列吗?!

如果没有,我应该寻找什么?我错过了什么?

最佳答案

这取决于表的创建方式。当您使用 serial 时,序列会自动创建并与表关联:

create table my_table_auto(id serial);
select pg_get_serial_sequence('my_table_auto', 'id');

pg_get_serial_sequence
-----------------------------
public.my_table_auto_id_seq
(1 row)

当您手动创建序列时,它不与表相关联:

create sequence my_sequence;
create table my_table_manually(id int default nextval('my_sequence'));
select pg_get_serial_sequence('my_table_manually', 'id');

pg_get_serial_sequence
------------------------

(1 row)

您可以更改序列以将其与表相关联:

alter sequence my_sequence owned by my_table_manually.id;
select pg_get_serial_sequence('my_table_manually', 'id');

pg_get_serial_sequence
------------------------
public.my_sequence
(1 row)

关于sql - pg_get_serial_sequence 什么都不返回(空字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54765644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com