【问题标题】:Two tables, unique id in both? [duplicate]两张表,两者都有唯一的ID? [复制]
【发布时间】:2025-12-03 03:40:01
【问题描述】:

我的数据库中有两个表,它们都包含一些要由用户完成的任务,第一个表名为 taches,第二个表名为 admin_taches,它们都包含一个名为 task_id 的列,它是唯一的在它的表中

我是否可以让 task_id 列在两个表中都是唯一的?我需要 task_id 的值是唯一的!我怎样才能做到这一点。

我正在使用 Oracle WorkBench 作为我的数据库的 IDE

编辑: id 在每个表中插入时自动递增

【问题讨论】:

  • 你能分享更多关于task_id的细节吗?它从何而来?它是数据库中的索引还是主键?它是自动递增的吗?您是否在应用程序逻辑中设置它?在添加另一个项目之前,您可以简单地检查任何表中是否使用了 id 吗?
  • 您询问如何使这两个表都独一无二的事实应该告诉您这不是一个好主意。正确的做法是合并表格。

标签: c# mysql .net


【解决方案1】:

将它们全部放在一个表中,并在其中添加一列admin enum('no','yes') default 'no'

另一种解决方案是在其中一个 id 前面加上一个字母,该字母不存在于 id 中。

【讨论】:

  • 我认为你的回答是我最简单的解决方法,你能告诉我如何在第二张桌子前写一封信吗?例如显示 a_1、a_2、a_3... 我需要自动递增列。
  • 不要把它放在表格里,放在任何你用的地方。
【解决方案2】:

您可能可以通过创建一个 SEQUENCE 对象来做到这一点。这是由 DBMS 维护的序列。然后,当您插入任一表时,您可以使用 sequence.nextval

我在 Oracle 以外的数据库上使用过这个,但是看看下面的页面,Oracle 似乎也支持它们:http://www.techonthenet.com/oracle/sequences.php

编辑:我刚刚意识到您将其标记为“MySql”,而不是 Oracle。如果您使用的是 MySql,我认为不支持此语法。

【讨论】:

  • 我同意这个回复,一个 SEQUENCE 对象将保证您的 task_id 在两个表中都是唯一的。但是,如果数据集在两个表之间是合适的,下面列出的另一种方法(一个表添加列管理指标解决方案)将起作用。
  • MySQL 不支持序列。
最近更新 更多