我想知道是否有人知道NEWSEQUENTIALID
是如何执行的。
我的意思是它是从SQL Server引擎运行还是从客户端数据库驱动程序进行评估?
还考虑到内部Win32实现,如果我没记错的话,这个函数调用将从任何线程生成一个顺序ID。
由于NEWSEQUENTIALID
只能作为DEFAULT
约束中的表达式使用,因此与客户端无关,客户端不必知道。
只有当INSERT
语句中没有列出具有DEFAULT
约束的列或在VALUES
列表中使用关键字DEFAULT
时,才会生成一个新的ID(该函数才会被调用)。
文档中的关键句子是:
创建一个GUID,该GUID大于自Windows启动以来该函数在指定计算机上生成的任何GUID。重新启动Windows后,GUID可以从较低的范围重新启动,但仍然是全局唯一的。
NEWSEQUENTIALID()只能与默认约束一起用于uniqueidentifier类型的表列。