2017-03-10 6 views
0

bigintカラムが一意ではありません。挿入時にこの列の値を設定できるようにしたいが、値が与えられていないときは、数値の列に次の列を自動的に生成したい。値が指定されていないときに次のシーケンスを生成

これは同期して実行できますか?新しい値は、2つのレコードが同時に挿入されたときに同じ番号が生成される可能性がなく、一意である必要があります。

+0

トランザクション内で生成する必要があります。この方法では、2つのスレッドによって生成された同じbigint *番号を取得しません。 –

+0

関数とトリガーを使って、テーブル自体でこれを行う方法はありますか? – Sio

+1

あなたのデータを整理してプライマリ/ユニークキーの制約を追加する必要があります – Tanner

答えて

1

データベース内にSequenceオブジェクトを定義し、明示的に値がinsertステートメントに指定されていない場合は、挿入するシーケンスから次の値を取得します。このためのロジックはトリガで実装できます。

https://msdn.microsoft.com/en-us/library/ff878058.aspx

他の人が示唆したように、ID列でしょう、より良いけれども。

+0

これは完璧です!まさに私が探していたもの。 – Sio

関連する問題