2

我想在 MS SQL 中有两个不同的表,例如用户和组,它们都带有标识列。可以在两个标识列上创建自动增量吗?我想要第三个表,其中包含这两个表的公共信息,并且我想识别唯一记录。

在 Oracle 中是 SEQUENCE。

有可能做到吗?

谢谢,

马丁·皮尔奇

4

3 回答 3

2

Afaik,SQL Server 没有可以在多个表中使用命名标识的概念(cfr. Oracles SEQUENCE

您有几个选项可以区分来自两个表的数据

  • 使用GUID作为两个表中的 ID 列。
  • 在您的第三个表中,操作两个表之一的 ID,再次生成一个唯一 ID(例如与 -1 相乘)。我假设您的第三张桌子将是其他两张桌子上的视图。
  • 重新考虑您的设计,以了解为什么需要这样的构造。

如果无法更改设计,则使用 GUID 将是我的首选。

于 2010-06-23T09:12:23.337 回答
0

对于 SQL Server,您有Identity 属性

您的第三个表应该通过外键引用用户和组。

要在第三个表中实现两列的唯一性,只需使用唯一约束,如下所示:

CREATE TABLE Third (
  id_user INT references Users(id),
  id_group INT references Groups(id),
  CONSTRAINT user_group_unique UNIQUE(id_user, id_group)
);
于 2010-06-23T08:49:51.620 回答
0

我不确定您正在寻找什么,但您可以使用以下IDENTITY属性在 SQL Server 中拥有自动增量字段:

CREATE TABLE new_employees
(
 id_num int IDENTITY(1,1),
 fname varchar (20),
 minit char(1),
 lname varchar(30)
);

在上面的示例中(取自链接页面),该id_num字段将自动递增,从种子 1 开始并将其递增 1。

您可以在每个表上都有这样一个字段,并在一个多对多表上连接这两者。

于 2010-06-23T08:50:51.470 回答