В таблице Event есть один вместо триггера, целью которого является генерация первичного ключа EventId как Max + 1, остальные столбцы заполняются из вставленного.SQL Вместо триггера иногда не срабатывает?
EventId не идентичность, и мы не можем сделать его идентичность как есть много depedency там, Trigger логика:
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
Теперь иногда, когда я попытался вставить в эту таблицу, она по-прежнему говорит, что может Вставьте дубликат в eventId, Не знаете, почему это происходит ...
Похоже, что триггер не является огнем в каком-то случае? Почему
Итак, это добавит некоторый тип блокировки, позвольте мне попробовать ... – Lalit
Это работало как бог, но не могли бы вы объяснить, в чем была проблема с предыдущей логикой. Это из-за блокировки стола? – Lalit
@Lalit - если честно, я решал (возможно) неправильную проблему - я думал, что вы можете вставлять несколько строк в таблицу в один оператор 'INSERT'. Но я верю в вышеупомянутый ответ, потому что он касается всего «поиска MAX», выработки новых идентификационных значений на его основе, вставки новых значений «как одного оператора», поэтому вам не нужно гадать с блокировкой подсказки или изменение уровней изоляции. –