在MS SQL 2005或2008中自动增加多个标识列

时间:2010-06-23 08:41:29

标签: sql-server database-design identity auto-increment multiple-tables

我想在MS SQL中有两个不同的表,例如用户和组,两者都带有标识列。可以在两个标识列上创建自动增量吗?我希望第三个表有这两个表的常见信息,我想识别唯一的记录。

在Oracle中是SEQUENCE。

可以这样做吗?

谢谢,

Martin Pilch

3 个答案:

答案 0 :(得分:2)

Afaik,SQL Server没有一个概念,你可以在多个表中使用命名身份(cfr.Oracles SEQUENCE

您可以通过几种方法来区分来自两个表格的数据

  • 在两个表格中使用GUID作为您的ID列。
  • 在第三个表中,操作两个表之一的ID,再次以唯一ID(例如,乘以-1)。 我假设您的第三个表格将是其他两个表格的视图。
  • 重新思考你的设计,为什么你需要这样的结构。

如果无法更改设计,则可以选择使用GUID。

答案 1 :(得分:0)

对于SQL Server,您获得了Identity property

您的第三个表格应通过foreign key引用用户和群组。

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

CREATE TABLE Third (
  id_user INT references Users(id),
  id_group INT references Groups(id),
  CONSTRAINT user_group_unique UNIQUE(id_user, id_group)
);

答案 2 :(得分: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。

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