Firebird triggers
5 отговора
127 прегледа
Firebird triggers
Може и въпроса да не е свързан пряко с тази група, но ще съм благодарен ако някой може да помогне по някакъв начин. Става въпрос за Firebird / Interbase, искам да направя тригер на update, в който да изкарам само променените полета от записа, който се редактира. Дали е възможно да стане без да проверявам всички полета едно по едно (if new.fieldname <> old.fieldname...).
Re: Firebird triggers
Нещо не мога да разбера какво разбираш под "да изкарам". Къде ще ги изкарваш?
Re: Firebird triggers
Разбирай го по един от двата начина:
1. към "да изкарам" добави: "и запиша в друга таблица имената на полетата"
или
2. "да изкарам" замени с: "да разбера и да променя само тях".
1. към "да изкарам" добави: "и запиша в друга таблица имената на полетата"
или
2. "да изкарам" замени с: "да разбера и да променя само тях".
Re: Firebird triggers
Не става ;-))) - това трябва да го направиш на ниво заявка към базата данни - примерно ако имаш 5 компонента - примерно 4исла - и промениш само един - да не пускаш всички полета -за update.
Единственото което ми хрумва е да правиш сравнение - Old_value = New_value - ама това е малко кофти защото се предава и обновяват всички полета, но ако ти трябва да следиш кои полета са обновени би станало. Виж не знам как би могъл да напишеш един универсален тригер за вси4ки таблици - виж това ме интересува за да си направя репликацията ;-)))
---
Е т'ва е живот!
Единственото което ми хрумва е да правиш сравнение - Old_value = New_value - ама това е малко кофти защото се предава и обновяват всички полета, но ако ти трябва да следиш кои полета са обновени би станало. Виж не знам как би могъл да напишеш един универсален тригер за вси4ки таблици - виж това ме интересува за да си направя репликацията ;-)))
---
Е т'ва е живот!
Re: Firebird triggers
:) И на мен ми трябва за репликация. Общо взето съм я направил (и работи :)), но не е това, което искам. Данните се синхронизират на ниво запис, което в началото вършеше работа. Проблема е, че базата е доста голяма като таблици и полета в тях, а и структурата се променя доста често , така че не ми се иска да поддържам хамалски тригери за всяка тблица. В firebird 1.5 вече има "универсални" тригери, но за една таблица, например един тригер за insert, update и delete едновременно, но не върши работа в този случай :(
Re: Firebird triggers
Ами ако успееш да направиш 3 универсални тригера (по един за всяко действие) - това е добре - лошото е ако се наложи да ползваш допълнителни такива - за някоя таблица което често се случва ;-)
Като казах универсален тригер имах предвид такъв който може да се използва независимо от таблицата и полетата които тя съдържа, а не такъв който може да се ползва при 3-те действия.
---
Е т'ва е живот!
Като казах универсален тригер имах предвид такъв който може да се използва независимо от таблицата и полетата които тя съдържа, а не такъв който може да се ползва при 3-те действия.
---
Е т'ва е живот!
Редактирано от PhantomAS на