【问题标题】:Two or more table with serial with uniq nums in every table两个或多个带有序列号的表,每个表中都有 uniq nums
【发布时间】:2014-03-02 10:09:57
【问题描述】:

我有 2 个带有序列字段的表(在表“m”中是字段“uniq”,在表“u”中是字段“uniq”)。 但是,如果我在(例如)u 中插入数据。自动增量函数为 u 中的下一行生成 +1(从 1 到 2),但如果在此操作之后我在另一个表中插入数据(例如)m 自动增量字段写下不是列中的下一个值 (1,2,3.. ),但是 3,即使在字段中是 1。

这意味着,什么自动增量函数在数据库中连续增加每个单个值,而不是在表中。

对不起,问题描述如此糟糕,英语不好=)

【问题讨论】:

  • 你有带增量行的表吗?在该表中插入数据有问题吗?
  • 不,插入不是问题。是的,我有一个带有增量行的表。但我想在表中有 uniq 数字的行,而不是在数据库中。例如:表“u”:1 a@a.a 2 b@b.b 表“m”:1 asd 2 sad 但不是表“u”:1 a@a.a 2 b@b.b 表“m”:3 asd 4 sad
  • 请为您使用的表和插入张贴create table 语句。理想情况下作为sqlfiddle.com 示例

标签: sql postgresql auto-increment


【解决方案1】:

如果你想要一个 id 是unique in all tables,试试这样的:

CREATE SEQUENCE id_seq;  

CREATE TABLE table1(id INTEGER PRIMARY KEY DEFAULT NEXTVAL('id_seq'),Test1 varchar);
CREATE TABLE table2(id INTEGER PRIMARY KEY DEFAULT NEXTVAL('id_seq'),Test2 varchar);

尝试这样的事情来创建unique id for each table

CREATE TABLE table3(id serial,Test3 varchar);
CREATE TABLE table4(id serial,Test4 varchar);

SQL Fiddle

【讨论】:

  • 看看我的回答中的Table3,Table4,它会给你答案。
  • 非常感谢!这就是我需要的! (你真棒 U_Ov)
【解决方案2】:

如果我理解正确,您需要在表“a”和“b”上使用唯一 ID。因此,创建一个带有序列列的表只是为了让您的键(例如“id_table”)和所有其他表都将此键作为外键。每次你需要一个新的 ID 时,你插入你的“id_table”并指向这个新的键。

【讨论】:

  • 不,我需要唯一 ID 而不是所有表。我需要表 A 和表 B 中的唯一 ID。(它们可以具有相同的值)
  • 好的,然后在表 A 和 B 上,没有其他表被提及。仅对那些需要唯一密钥的表使用此架构 - 我相应地编辑了我的答案
  • 天哪,我只需要在每个表中连续的值,甚至不是唯一的,它们应该只是串行的
猜你喜欢
  • 2019-02-17
  • 2021-01-10
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多