Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Вниз

Хочу покаяться за то, что наговорил про генераторы в триггерах   Найти похожие ветки 

 
kaif ©   (2006-07-16 20:28) [0]

Как-то месяц назад я заявил, что юзать генераторы в триггерах IB - плохая традиция, так как это не позволяет найти только что вставленную запись (информация внутри триггера во внешний мир не проникает).
Вполне разумное предложение использовать в триггере проверку на NULL

 IF (NEW.ID IS NULL) THEN
  NEW.ID = GEN_ID(MyGenerator, 1);

я отверг, так как это не решало проблему.

Так получилось потому что я уже давно не использовал средства разработки типа IBExpress, а работал в основном в своей специализированной среде, где эти вопросы решались системой и несколько иначе.
Сейчас я пишу одну базу данных с нуля, используя IBExpert и я заметил, что если в IBExpert делаешь ручное добавление записей в таблицы, то приходится еще параллельно потом не забывать модифицировать генераторы, чтобы при работе приложения не попасть в VIOLATION первичного ключа.

Оказалось, что использование генераторов в триггерах с условием проверки ключевого поля при вставке на NULL снимает эту проблему и значительно упрощает процесс разработки базы, так как позволяет просто забыть о генераторах, даже если работаешь не из своего приложения, а просто "руками" в IBExpert.

Так что каюсь и беру свои слова назад.

Я вижу, что все же Имеет смысл использовать присвоение в триггерах BEFORE INSERT IB.

Разумеется, это не решает проблему нахождения вставленной записи, но зато решает другую проблему - герантированную модификацию генератора, не зависящую от способа вставки записи - из приложения или "руками" в IBExpert.

Как IBExpert находит вставленные записи - для меня загадка, если честно. Либо он прощучивает уникальные альтернативные ключи, либо опирается на содержимое всех полей. Не знаю.


 
DrPass ©   (2006-07-16 21:17) [1]

Господь прощает твои грехи, сын мой


 
unknown ©   (2006-07-17 00:12) [2]

Аминь.


 
Суслик ©   (2006-07-17 03:20) [3]

новичек ты наш :)


 
Desdechado ©   (2006-07-17 10:56) [4]

> имеет смысл использовать
Это и называется "бизнес-логика на сервере"
:)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.017 c
2-1153252646
crazy_corpse
2006-07-18 23:57
2006.08.06
Java


3-1149233047
novill
2006-06-02 11:24
2006.08.06
Как сделать максимально быстрое добавление/обновление?


1-1151172238
AlexeyT
2006-06-24 22:03
2006.08.06
Fatal: Internal error: L1496


3-1149163023
Hadroran
2006-06-01 15:57
2006.08.06
Динамические LookUp поля


15-1152527832
tsa
2006-07-10 14:37
2006.08.06
Скажите самое странное, куда Вы прикладывались.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский