dbがuniqueindentifierを自動的に生成する方法は?

私はid(guid)列を持つSQLテーブルを持っています。 どのように私はDBを自動的にすべての新しいレコードの新しいGUIDを生成するように強制することができますか?

10

3 答え

DEFAULT(newid())を追加してください。

20
追加された
ありがとう。それはアイデンティティguidとしてそれを定義するために何かを作るだろうか?
追加された 著者 Elad Benda,

@SLaksが述べたようにDEFAULT(newid())アプローチを使用すると、誰でもGuidカラムからGuid値を変更できるようになり、それが悪い可能性があります。

これを避けるための1つのアプローチは、「Guid」列を永続計算列として設定することです。そうすれば、別の値を列に強制することさえできません。しかし、NEWID()関数はNon Deterministicなので、Computed ColumnをPersistedとして定義することはできず、Persistedは新しいGuidとして設定されるため、その行を選択するたびに全体のアプローチが下がります。

つまり、DEFAULT(newid())アプローチを採用するか、トリガーを使用して作業するという2つの選択肢があると思います。

2
追加された

次のクエリを使用してみてください:

CREATE TABLE TEST
(
    ID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID() PRIMARY KEY,
    TESTCOLUMN CHAR(2000) DEFAULT REPLICATE('X',2000)
)
GO
0
追加された