Firebird - Trigger kasujący tabele i tworzący ją od nowa po alter table

Odpowiedz Nowy wątek
2011-09-12 16:06
0

hej, jak w temacie, czy robiliście coś takiego w bazie firebird?

potrzebuje spis kolumn z jednej tabeli w drugiej tabeli, zawsze aktualne muszą być

np jeśli ktoś zmienił tabele , dodał lub usunął kolumnę to potrzebuję drop innej tabeli, generatora i trigerów, utworzyć tą tabele na nowo wraz z jej triggerami i generatorami, i wpisać nazwy kolumn.

Kod do listingu kolumn tabeli mam

 select f.rdb$field_name
  from rdb$relation_fields f
  join rdb$relations r on f.rdb$relation_name = r.rdb$relation_name
  and r.rdb$view_blr is null 
  and (r.rdb$system_flag is null or r.rdb$system_flag = 0)
Where f.rdb$relation_name='RISK_T_LOGRULES' and f.rdb$field_name NOT IN ('F_NAME','ID')
order by f.rdb$field_position;

i z tego selecta insert into.
kod do tworzenia tej nowej tabeli też mam wraz z duperelami. potrzsebuje tylko wiedzieć jak to drop w triggerze.

nie wiem jak zdropować tabele w triggerze. chyba że macie lepszy pomysł

Pozostało 580 znaków

2011-09-12 21:43
0

nie możesz w triggerze usunąć tabeli na której jest trigger.
Ale tak BTW to nie bardzo rozumiem co i kiedy chcesz usunąć, na jakiej tabeli masz trigger założony


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-09-13 22:54
0
lightning3 napisał(a)

...
potrzebuje spis kolumn z jednej tabeli w drugiej tabeli, zawsze aktualne muszą być
...

Coś takiego już jest ; ) - rdb$relation_fields - zawsze aktualne : ) Jak chcesz mieć dodatkowe informacje o polach to się złączaj do tej tabeli po relation_name i field_name.

lightning3 napisał(a)

np jeśli ktoś zmienił tabele , dodał lub usunął kolumnę to potrzebuję drop innej tabeli, generatora i trigerów, utworzyć tą tabele na nowo wraz z jej triggerami i generatorami, i wpisać nazwy kolumn.
...
nie wiem jak zdropować tabele w triggerze. chyba że macie lepszy pomysł

Ale jak zmienił ? To jest ficzer aplikacji, czy zmienił od strony bazy. Jak ficzer aplikacji - to w aplikacji zrób sobie "trigger".
Trigger o którym piszesz musiał by się wzbudzać po zmianie metadanych - a takiego czegoś (chyba) w Firebirdzie nie ma.

Kiedyś pamiętam że oglądałem prezentację jednego programu do replikacji w FB. Z tego co pamiętam replikowały się też zmiany metadanych. Jak sobie przypomnę to dam link.

Kiedyś napisałem system replikacji dla FB - problem zmian w strukturach tabel rozwiązałem tak, że mam tabelę gdzie znajdują się informacje o dodanych / zmodyfikowanych polach w bazie. Jak replikator ściąga dane, i wykryje że są jakieś zmiany / nowe rekordy w tej tabeli, to wykonuje odpowienie CREATE / ALTER / DROP.

B

edytowany 1x, ostatnio: b0bik, 2011-09-13 22:54

Pozostało 580 znaków

2011-09-14 10:06
0

Dzięki bardzo za podpowiedzi, zrobię to po stronie aplikacji :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0