Mik*_*rie 4 sql sql-server-2008
使用SQL Server 2008 R2,我有一个Users表,我想在其中保留手动输入系统用户的前99个ID值.我已将我的身份种子设置为100,以便在正常行为中为所有新用户提供100+的值.我发现我可以SET IDENTITY_INSERT用来抑制身份规范并为此列提供显式值.我需要知道的,并且无法从MSDN中真正理解,这种抑制是否仅适用于正在运行的脚本的上下文.(即,在网站上创建的新用户,调用正常的插入过程,仍将被赋予下一个值> 100的自动生成ID)
SET IDENTITY_INSERT 允许您直接插入标识值,它不需要它.因此,即使它是共享设置,运行"正常"INSERT也会获得自动生成的标识.
也就是说,这也是每个会话的设置,所以你是双重安全的.
至于设计 - 我做了类似的事情,并没有看到它的问题.拥有"众所周知的"标识符是相当普遍的 - 尽管您必须决定100是否是适当的保留块.虽然可能,但你真的不想在以后打开一个不连续的块.过去没有保留范围时我使用了负数.