У меня есть таблица с основным ключом, которая принимает последовательное значение с помощью триггера.Когда нужно добавить Sequential Primary key? до или после вставки?
Какое время лучше всего добавить этот ключ?
до или после вставка?
У меня есть таблица с основным ключом, которая принимает последовательное значение с помощью триггера.Когда нужно добавить Sequential Primary key? до или после вставки?
Какое время лучше всего добавить этот ключ?
до или после вставка?
Вы хотите сделать триггер перед вставкой, поэтому значение первичного ключа можно получить из последовательности перед вставкой строки. Это позволяет удовлетворить ограничениям таблицы для первичного ключа (не нулевого и уникального).
, если я использовал ** перед ** триггером и получил новое значение из последовательности перед вставкой, но окончательная транзакция была откатна, , тогда я потеряю последовательное значение из последовательности. Я не хочу, чтобы это случилось. – Nosairat
Последовательности, как правило, не имеют пробелов в последовательности из-за описанных ситуаций. Есть ли причина, по которой вы не хотите, чтобы это произошло? Первичные ключи просто должны быть уникальными, а не последовательными. – Nick
@Nosairat: нет абсолютно никакой возможности предотвратить «последовательные значения, потерянные во время отката». Не могу этого сделать. Покончи с этим. Значения из последовательности - это просто цифры. Скажи еще раз - они просто цифры. Они не имеют никакого значения. У них нет «духа» или «души» или чего-то еще. Это просто цифры. Они не «умирают», потому что транзакция откатывается. Они не живы. Это просто цифры. Вдохните - выдохните - двигайтесь дальше. –
Если вы вставляете запись в таблицу с первичным ключом, вам сразу же нужно будет указать уникальное значение ключа.
это может зависеть от других условий, но почти лучше быть в ** перед ** триггером, однако вы можете сделать это в после триггера, а затем обновить его, но это не рекомендуется – jfun
Простите, это неправильно. ПОСЛЕ триггеров не могут изменить значение любых столбцов в таблице запуска. Для этой цели вы использовали бы только триггер BEFORE. –