12

データベースを更新して、テーブル内の各レコードのGUIDの列を作成しています。

このテーブルにはいくつかの異なるソースが入力されており、それらの一部は新しいレコードのGUIDを提供しません。

新しいレコードに値が渡されなかった場合にのみ、DB側でこの列にnewid()を入力するにはどうすればよいですか?

4

2 に答える 2

23

繰り返さないでください。デフォルトの列を配置しないでNEWID()ください。GUIDを実行すると、取得するものは完全にランダムになり、この列に何らかのインデックスが作成されている場合は役に立ちません。これを行う場合は、列のデフォルトを次のように設定します。NEWSEQUENTIALID ( )

キンバリー・トリップには、このテーマに関するすばらしい記事と別のすばらしい記事があります。

NEWSEQUENTIALID ( )デフォルトとして実装するには:

CREATE TABLE foo
(unq_id UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(),
 cola varchar(10));

完全なSQLフィドルの例。

于 2013-02-11T17:27:37.613 に答える
5

列のデフォルト値をに設定できますNEWID()。次に、GUIDが作成され、割り当てられていない場合にのみ割り当てられます。

于 2013-02-11T17:20:47.473 に答える