在存储过程中(使用 SQL Server 2008 R2 SP2)是否可以在NewSequentialID()
没有临时表变量的情况下返回 a?
NewSequentialID()
我可以通过使用临时表成功获得:
也许我是老派,但除非绝对必要,否则我尽量避免使用临时表……尽管这可能是绝对必要的情况……</p>
如果我尝试:
DECLARE @NewSequentialID UNIQUEIDENTIFIER;
SET @NewSequentialID = NEWID()
......它按预期工作。
如果我尝试:
DECLARE @NewSequentialID UNIQUEIDENTIFIER;
SET @NewSequentialID = NEWSEQUENTIALID()
…我收到以下错误:
newsequentialid() 内置函数只能用于 CREATE TABLE 或 ALTER TABLE 语句中类型为“uniqueidentifier”的列的 DEFAULT 表达式。它不能与其他运算符组合形成复杂的标量表达式。
- 是使用临时表方法的唯一解决方案吗?
- 有谁知道微软为什么在
NEWSEQUENTIALID()
to work like之间实现区别的原因NEWID()
? - 任何人都知道微软是否有机会更新
NEWSEQUENTIALID()
为像这样工作NEWID()
?
地理
更新——我不确定微软为什么选择以这种方式实现该方法,因为他们声明“NEWSEQUENTIALID 是 Windows UuidCreateSequential 函数的包装器”......但似乎没有非临时变量表法。(至少到目前为止。)
感谢大家的评论/回答。[主持人注意:]当答案是“不可能”时,我不确定如何处理问题。所以我要感谢@marc_s 详细介绍了一种解决方法。