Sql server 为什么SQL Server中允许标识唯一?

Sql server 为什么SQL Server中允许标识唯一?,sql-server,Sql Server,这是为什么 CREATE TABLE ORDERS ( OrderID INT IDENTITY(1, 1) UNIQUE, BuyerID INT, PRIMARY KEY(OrderID, BuyerID) ); SQL Server中是否允许 我的意思是,为什么标识(1,1)是唯一的是允许的 IDENTITY是否已经意味着这些值将是唯一的 这就像C#中的静态常量-常量已经是静态的(C#中不允许使用静态常量)。否,标识并不意味着值是唯一的。您可以重置标识列的种子,该种子

这是为什么

CREATE TABLE ORDERS
(
   OrderID INT IDENTITY(1, 1) UNIQUE,
   BuyerID INT,

   PRIMARY KEY(OrderID, BuyerID)
);
SQL Server中是否允许

我的意思是,为什么
标识(1,1)是唯一的
是允许的

IDENTITY
是否已经意味着这些值将是唯一的


这就像C#中的静态常量-常量已经是静态的(C#中不允许使用静态常量)。

否,
标识
并不意味着值是唯一的。您可以重置标识列的种子,该种子将为您提供重复项。或者您可以启用
IDENTITY\u INSERT
,这将允许您将自己的值放入


IDENTITY
指的是如何生成值,而
UNIQUE
则添加了一个约束。两个不同的概念。

不,
IDENTITY
并不意味着值是唯一的。您可以重置标识列的种子,该种子将为您提供重复项。或者您可以启用
IDENTITY\u INSERT
,这将允许您将自己的值放入


IDENTITY
指的是如何生成值,而
UNIQUE
则添加了一个约束。两个不同的概念。

这只是另一个限制。可以为插入禁用标识,允许您为其指定显式值……因此,您可以具有重复项。这不是sameNO<代码>标识
本身并不能说明唯一性!如果您摆弄标识值(如使用
DBCC RESEED
等),则
identity
列代码中没有任何内容可以阻止SQL Server发出以前已分配的值。。。。。不允许的是指定
唯一主键
。没有任何技术原因阻止在列上同时定义主键约束和唯一约束,但SQL Server将不允许这样做,因为这没有意义。重复索引在其他方面也很好,即使它们完全相同,如果您愿意,您甚至可以在主键列上放置唯一的索引。这更符合您的
静态常量
示例。这只是另一个约束。可以为插入禁用标识,允许您为其指定显式值……因此,您可以具有重复项。这不是sameNO<代码>标识
本身并不能说明唯一性!如果您摆弄标识值(如使用
DBCC RESEED
等),则
identity
列代码中没有任何内容可以阻止SQL Server发出以前已分配的值。。。。。不允许的是指定
唯一主键
。没有任何技术原因阻止在列上同时定义主键约束和唯一约束,但SQL Server将不允许这样做,因为这没有意义。重复索引在其他方面也很好,即使它们完全相同,如果您愿意,您甚至可以在主键列上放置唯一的索引。这更符合您的
静态常量
示例。