Дозвуковая проблема автоинкремента Oracle - PullRequest
1 голос
/ 31 августа 2010

Я думаю, что этот вопрос уже был задан, но я не нашел четкого ответа.Я перенес базу данных SQl Server 2005 в Oracle 11. Я использую дозвуковую версию 2.1.Мне удалось создать все классы слоя данных, и все хорошо генерируется.Но проблема возникает, когда я пытаюсь сделать вставку в базу данных: у Oracle нет автоинкремента в первичном ключе, если вы не определите последовательность и триггер.В результате Subsonic определяет все методы вставки в контроллере с помощью столбца id.Есть ли способ избежать дозвуковой не генерировать методы вставки с помощью столбца id, который я собираюсь с помощью триггера и последовательности?

Большое спасибо

SToledo

ОБНОВЛЕНИЕ Я наконец сделал ужасный хак (мне стыдно) в исходном коде Subsonic 2.1.Я изменил OracleDataProvider, чтобы установить для именованных столбцов значение автоинкремента, равное true.Тогда шаблон будет вести себя как я ожидаю.Я знаю, это ужасный взлом, но он работает для меня.Спасибо за вашу помощь, ребята.

1 Ответ

0 голосов
/ 01 сентября 2010

Не знаю о Subsonic, но если количество таблиц относительно мало, вы можете изменить триггер BEFORE-INSERT, чтобы отключить проверку недействительности:

CREATE OR REPLACE TRIGGER trig_BI
   BEFORE INSERT
   ON tab_name
   FOR EACH ROW
BEGIN
   --IF :NEW.key_column IS NULL
   --THEN
      SELECT tab_seq.NEXTVAL INTO :NEW.key_column FROM DUAL;
   --END IF;
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...