NewSequentialID()
ストアドプロシージャ(SQL Server 2008 R2 SP2を使用)で、一時テーブル変数なしでを返すことは可能ですか?
NewSequentialID()
一時テーブルを使用して、を正常に取得できます。
おそらく私は古い学校ですが、絶対に必要な場合を除いて、一時テーブルの使用は控えるようにしています…これは絶対に必要な場合かもしれませんが…</ p>
私が試してみると:
DECLARE @NewSequentialID UNIQUEIDENTIFIER;
SET @NewSequentialID = NEWID()
…期待どおりに機能します。
私が試してみると:
DECLARE @NewSequentialID UNIQUEIDENTIFIER;
SET @NewSequentialID = NEWSEQUENTIALID()
…次のエラーが表示されます。
newsequentialid()組み込み関数は、CREATETABLEまたはALTERTABLEステートメントの「uniqueidentifier」タイプの列のDEFAULT式でのみ使用できます。他の演算子と組み合わせて、複雑なスカラー式を形成することはできません。
- 一時テーブルメソッドを使用する唯一の解決策はありますか?
NEWSEQUENTIALID()
マイクロソフトがのように機能するために違いを実装した理由を誰かが知っていますNEWID()
か?NEWSEQUENTIALID()
Microsoftが次のように動作するように更新する可能性があるかどうか誰かが知っていNEWID()
ますか?
ジオ
更新-「NEWSEQUENTIALIDはWindowsUuidCreateSequential関数のラッパーである」と述べているため、Microsoftがこの方法でメソッドを実装することを選択した理由はわかりません...しかし、非一時変数はないようですテーブルメソッド。(少なくとも現時点では。)
皆さんのコメント/回答に感謝します。【モデレーター注:】答えが「不可能」の場合、質問をどうすればいいのかわかりません。そこで、回避策の詳細について@marc_sの功績を認めます。