Sql-Server-2005

為什麼我不能在使用者定義的表值函式中使用 newid()?

  • July 10, 2017

我最近發現 SQL Server 2005 不允許newid()在使用者定義的函式中使用。為什麼是這樣?

我有一個適合我需要的替代解決方案,所以我不是在尋找解決這個問題的方法。我很好奇為什麼設計師會做出這個決定。

SQL Server 只允許在使用者定義的函式中使用確定性函式。由於 NEWID() 的值不是確定性的,因此不能使用。您會發現 GETDATE() 和任何其他非確定性函式也是如此。

我沒有資格回答他們為什麼會做出這個決定。這也讓我很惱火,但我確信 MS 的 SQL 團隊不會無精打采。

**編輯:**事實證明,我對 GETDATE() 的了解已經過時了。正如評論者所說,您可以在 SQL Server 2005 以後的函式中使用 GETDATE() 。但是,您仍然不能使用 NEWID(),我認為這與相同的非確定性約束有關。

引用自:https://dba.stackexchange.com/questions/968