【问题标题】:How to generate unique numbers in a SQL Server database如何在 SQL Server 数据库中生成唯一编号
【发布时间】:2015-10-24 17:42:14
【问题描述】:

我想通过唯一 id 维护数据库中所有表中的所有列,并且 ID 应该按升序排列。

当我将在数据库的任何表中添加一列时,该列应由其在整个数据库中的 id 唯一标识。

【问题讨论】:

  • 指南不够好?您可以使用序列,但这可能会成为热点并导致问题
  • 您已经陈述了您的要求,但没有提出任何问题。你能展示你的尝试吗?不加思索地在所有表中任意添加 IDENTITY 列作为主键是导致数据模型错误的秘诀。

标签: sql-server database relational-database unique-index mssql-jdbc


【解决方案1】:

有一个 T-SQL 关键字 IDENTITY 使用它来自动增加一列。

如果你定义一个表,它看起来像这样:

CREATE TABLE MyTabel
(
     ID int IDENTITY(1,1) PRIMARY KEY,
     SomeColumn varchar(100) NOT NULL,
     AnotherColumn VARCHAR(100)
)

IDENTITY 的第一个值定义了它的初始值。第二个值是增量。因此,如果您编写类似IDENTITY(100, 10) 的内容,则初始 ID(您添加的第一行的第一个 ID)将为 100。第二个 110,第三个 120,...

+++编辑+++

CREATE TABLE MyTable
(
    ID uniqueidentifier NEWID() PRIMARY KEY,
    SomeColumn varchar(100) NOT NULL,
    AnotherColumn VARCHAR(100)
)

【讨论】:

  • 我使用了它,但这将使这条规则严格限制于 MyTable 表,有没有办法在一个数据库。
  • 有一个名为 NEWID() 的 MS-SQL 函数,它将为您的数据库生成一个 16 字节的全局唯一 ID。要使用它定义一个表,它应该像上面那样工作。我编辑了我的答案。
  • ...但是随着整个数据库数量的增加,这是不可能的。调用此函数只会为您提供任何随机 ID,没有特定顺序。
猜你喜欢
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 2012-03-01
相关资源
最近更新 更多