0

让我更好地解释一下:我需要设计一个需要安装在不同位置(可能相互连接或不相互连接)的数据库。

我的想法是:我为什么不使用一个列,在其中我将有关位置(站点)的信息作为键,并且我有另一个包含记录 ID 的字段?例如,我需要一个Customers包含一个customer_id和一个site_id列的表。

不过,我知道我不能在一个表中创建多个具有自动增量的标识列。我最终想到的是:有没有办法只有一个身份列但与另一列相关?

例如,如果我可以有一个这样的客户表,那就太好了:

site_id cust_id description
1        1       John Doe
1        2       Joseph White
1        3       Carlos Santana
2        1       Mike Jones
2        2       Carl Johnson

cust_id必须有自动增量。

先感谢您

4

3 回答 3

1

您可以在两列上创建 PK


create table customers (CustomerRegion int not null,
                       CustomerID int identity(1000,1) not null,
                       primary key (CustomerRegion,CustomerID)
                      )
于 2013-03-25T17:44:40.513 回答
1

我有一个更好的建议:如果您只需要每边的数字是唯一的,为什么不这样做呢?在您的设计中,您需要1在表中的每一行中重复该值。这对我来说似乎很浪费。相反,尝试给出身份范围:

在站点 1:

CREATE TABLE dbo.Customers
(
  CustomerID BIGINT IDENTITY (1000000000,1)
  , other columns...

在站点 2:

CREATE TABLE dbo.Customers
(
  CustomerID BIGINT IDENTITY (2000000000,1)
  , other columns...

现在,您不仅几乎可以保证永远不会创建重复项(除非您以惊人的惊人速度创建客户),而且您还可以立即知道客户是在哪里创建的。

于 2013-03-25T17:39:23.280 回答
0

听起来您想要一个复合主键(请参阅此处的MSDN 文档)。

这没什么大不了的,但以后可能会成为皇家的痛苦。(加入多个主键字段很麻烦)

于 2013-03-25T17:41:03.400 回答