Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server中uniqueidentifier的用途是什么?_Sql Server - Fatal编程技术网

Sql server SQL Server中uniqueidentifier的用途是什么?

Sql server SQL Server中uniqueidentifier的用途是什么?,sql-server,Sql Server,我有一张这样的桌子: Table1 (Table_ID Int Primary Key, Name Varchar(50), ROWID Uniqueidentifier) 使用NEWID()函数设置ROWID列的默认值 我知道NEWID()函数将为每一行生成一个唯一的标识符 我想知道为什么每行都需要一个唯一的标识符?如果我们想要每一行的唯一性,我可以使用主键来实现。我是SQL新手。请告知 谢谢。uniqueidentifier是一个特定于CPU的ID,它是全局唯一的,特别是当您必须移

我有一张这样的桌子:

   Table1 (Table_ID Int Primary Key, Name Varchar(50), ROWID Uniqueidentifier) 
使用
NEWID()
函数设置
ROWID
列的默认值

我知道
NEWID()
函数将为每一行生成一个唯一的标识符

我想知道为什么每行都需要一个唯一的标识符?如果我们想要每一行的唯一性,我可以使用主键来实现。我是SQL新手。请告知


谢谢。

uniqueidentifier是一个特定于CPU的ID,它是全局唯一的,特别是当您必须移动数据时,它非常有用,因为行标识(整数)将在新的DB服务器上重新开始。

如果您与其他系统进行接口,它可能会很有用。但是,如果您在一个独立的系统中工作,您完全可以使用您的PK作为表的“唯一”行id。

假设您有一组不同的相同数据库用于不同的客户端,然后是一个中央数据库,其中包含来自所有客户端的一些信息。如果您需要中央数据库中表的唯一性,您可以使用UniqueIdentifier(大部分情况下)实现这一点。您必须询问此数据库架构的原始设计者,了解其原因。SQL Server的某些功能(如复制)确实需要GUID列才能正常工作—这可能是原因之一。但我同意你的看法-如果你已经有了主键,那么就真的不需要另一个唯一的
ROWID