テーブルイベントにはトリガではなく1つのプライマリキーイベントIDがMax + 1として生成され、残りのカラムは挿入されます。SQLトリガーの代わりに時々起動しませんか?
のEventIdがアイデンティティではなく、depedencyの多くはそこにあると私たちはそれ身元作ることができない、トリガーロジック:私はこのテーブルに挿入しようとしたときに
SELECT TOP 1 @ID = Event.EventID FROM Event
IF (@ID IS NULL)
BEGIN
SET @ID=1
END
ELSE
BEGIN
SELECT @ID = MAX(Event.EventID) FROM Event
SET @[email protected]+1
END
--Then just a insert statment with this id as EventId and rest of the columns from inserted table
は今、時には、それはまだ缶を言いますイベントIDに重複を挿入していません、なぜこれが起こっているのかわかりません...
トリガーが起動していないようですね。理由
これでいくつかのタイプのロックが追加されますので、これを試してみましょう... – Lalit
これは神のように機能しましたが、以前のロジックの問題点を説明してください。それはテーブルロックのためですか? – Lalit
@Lalit - 正直言って、私は間違った問題を解決していました - テーブルに複数の行を1つのINSERT文で挿入している可能性があります。しかし、私は上記の答えを信じています。これは、「MAXの検索、それに基づく新しいID値の処理、新しい値の挿入」を1つのステートメントとして扱うためです。ロックする必要はありませんヒント、または分離レベルの変更。 –