Насколько плохо имитировать столбцы IDENTITY / AUTOINCREMENT с использованием триггеров в Oracle? - PullRequest
3 голосов
/ 05 декабря 2009

Я поддерживаю приложение, которое изначально было написано, чтобы быть специфичным для SQL Server (используя поля IDENTITY). Таким образом, нам пришлось определить множество триггеров для автоматического приращения первичных ключей таблиц.

Мне сказали, что это считается хакерским обходным путем в мире Оракула, но мне об этом говорили в духе "друга друга". Насколько сложно использовать триггеры для увеличения первичных ключей из последовательности вместо непосредственного использования последовательности?

Ответы [ 2 ]

10 голосов
/ 05 декабря 2009

По моему опыту, это очень распространенная практика, и не очень плохая. Однако, если у вас есть контроль над вставками (например, если все вставки выполняются с помощью API PL / SQL), то более эффективно использовать последовательность непосредственно в операторе INSERT - потому что это позволяет избежать издержек при запуске триггера. Но я бы не стал излишне волноваться об этом, если бы вы использовали триггеры!

1 голос
/ 07 декабря 2009

Это может быть не совсем актуально, но использование «перед вставкой триггера» для автоматического увеличения первичных ключей является хорошим вариантом, особенно в операторах слияния. Если последовательность используется непосредственно внутри секции вставки слиянием, последовательность, кажется, вызывается даже для обновлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...