управление / реализация автоинкрементного первичного ключа в Oracle без триггеров - PullRequest
0 голосов
/ 10 января 2012

У нас есть много таблиц в нашей базе данных с идентификаторами первичных ключей автоинкремента, настроенными так, как они есть в MySQL, так как мы находимся в процессе перехода на Oracle из MySQL.

Теперь в Oracle я недавно узнал, что для реализации этого необходимо создать последовательность и триггер в поле id для каждой такой таблицы.В нашей схеме 30-40 таблиц, и мы хотим избежать использования триггеров базы данных в нашем продукте, поскольку управление базой данных выходит за рамки нашего программного приложения.

Какие у меня есть варианты при реализации функции автоматического увеличения идентификатора в oracle ... кроме ручного указания идентификатора в коде и управления им в коде, что изменит многие существующие операторы вставки.

... Интересно, есть ли способ сделать это из самого кода grails?(кстати, метод указания id как приращения в отображении классов домена не работает - работает только для mysql) Некоторая информация о среде нашего приложения: grails-groovy, hibernate, oracle, mysql support

Ответы [ 2 ]

1 голос
/ 10 января 2012

В этом ответе Grails / Hibernate будет обрабатывать генерацию последовательности самостоятельно.Он создаст последовательность для каждой таблицы для генерации первичного ключа и не будет кешировать никакие числа, поэтому вы не потеряете ни одного идентификатора, если и когда тайм-аут кешируется.Grails / Hibernate вызывает последовательность напрямую, поэтому она также не использует триггеры.

1 голос
/ 10 января 2012

Если вы используете Grails, Hibernate будет обрабатывать это автоматически.

Вы можете указать, какую последовательность использовать, добавив в свой объект домена следующее:

static mapping = {
    id generator:'sequence', params:[sequence:'MY_SEQ']  
} 
...