【问题标题】:Set nextval sequence data type to integer only仅将 nextval 序列数据类型设置为整数
【发布时间】:2016-11-18 03:04:29
【问题描述】:

我有一个关于我的 postgresql 数据库中“id”字段的默认值的问题。这是语法:-

nextval('unsub_keyword_id_seq'::regclass)

但是,即使在阅读 documentations 之后我也不是很明白,我只想为整数设置值(仅限数字)。我尝试通过将 regclass 更改为其他 OID 来更改列,但每次都会返回错误。

如果能尽快解决这个问题,我真的很感激。

更新:

在我尝试生成列的 id 的代码并出错之后,我才想到了列的数据类型。 整数(在这种情况下为 postgresql)是否有自己的默认长度? 如果我需要插入长ID,我应该设置列长吗? 请多多指教。

对不起,如果我的问题很混乱。你的 cmets 可能会帮助我改进它。

【问题讨论】:

  • 我不明白,nextval 只给你整数。您的id 正在从序列中获取新整数以确保唯一性。 ::regclass 是一个类型转换。你到底想完成什么?
  • @muistooshort 让我先更新我的问题。很抱歉给您带来不便。
  • @muistooshort 只是更新我的问题。我很高兴得到你的下一个 cmets。 =)
  • 我还是不明白你遇到了什么问题。如果你展示具体的例子,也许会有所帮助。你在尝试什么?你得到什么错误?你想解决什么问题?
  • 您的列可能是serial 类型,它只是一个整数列与用于提供默认值(或多或少)的序列相结合。也许你想要bigserial

标签: postgresql nextval


【解决方案1】:

来自cmets:

我需要插入一个长度为 50 的 id,其中包含 2 个字母,其余的是数字。由于数据类型为整数且数据插入不成功,因此出现问题。是否可以通过将数据类型保留为整数来插入我想要的数据?

如果我理解正确,您可能需要格式化一个字符串,例如

format('%s%s', 'XX', nextval('some_sequence_name'))

【讨论】:

  • 如果column的数据类型是整数,还有可能吗?
  • @WafieAli 整数中不能有字母。这是没有意义的。所以不行。您可以使用某种位移技巧将整数“翻译”成您想要的怪异格式,但我不打算这样做,因为它很疯狂,您不应该这样做,而且这将是不切实际的困难让你做。
  • 如果是这样,我将与我的团队讨论这个问题。你的答案我觉得。感谢您为澄清这些混乱所做的努力。 =)
猜你喜欢
  • 2013-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多