【问题标题】:two columns with auto_increment具有 auto_increment 的两列
【发布时间】:2020-01-11 17:37:16
【问题描述】:

我希望我的表格看起来像这样,只输入评论值:

ID ID2 Comment
1  1   Hi!
2  2   Hi!

【问题讨论】:

  • 只使用1个自增列,然后在运行select查询时,选择两次id,例如:SELECT id, id2 AS id, comment FROM tablename
  • 您为什么要这样做?我在这里和克里斯蒂安在一起;只需存储一次 ID。将其存储两次甚至会违反规范化,因为您总是可以通过查看另一个 ID 来确定一个 ID。或者您想稍后更改其中一个值(即,这只是可能更改的初始值)?您使用的是什么 DBMS?
  • @ThorstenKettner 在某些情况下,拥有多个身份列可能很有用。例如,一个 id 是表的内部“键”,而另一些则适合暴露给外部服务。它们不需要都是表的键,它们的值也不需要相同;实际上,出于安全目的,当它们不同时它很有用。
  • 目标是什么?为什么需要两个自动增量?

标签: sql auto-increment


【解决方案1】:

你没有提到你的数据库,所以这个答案解决了一般问题。

大多数数据库支持每个表有一个标识列。唯一支持多个身份列的数据库 [我知道] 是 PostgreSQL。 PostgreSQL 万岁!

这是一个例子:

create table t (
  id1 int generated always as identity,
  id2 int generated always as identity,
  comment varchar(50)
);

insert into t (comment) values ('Hi Anna');
insert into t (comment) values ('Hi Peter');

select * from t;

结果:

id1  id2  comment
---  ---  --------
  1    1  Hi Anna 
  2    2  Hi Peter

请注意,默认情况下它们都从 1 开始,但每一代可以有不同的参数。即,它们可以从不同的起点、不同的界限、不同的周期等开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-23
    • 2014-10-19
    • 2010-12-04
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    相关资源
    最近更新 更多