Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]Jak utworzyć trigger do innej bazy przy updacie ?
Forum PHP.pl > Forum > Przedszkole
kuna11
Chciałbym aby przy aktualizacji (update) tabeli 't1' z bazy nr 1 został wykonany insert do tabeli 't2' bazy nr 2.
Jak zrobić taki wyzwalacz ?
b4rt3kk
Najpierw piszesz funkcję, która zajmie się wrzucaniem odpowiednich danych do T2. Następnie przypisujesz ją jako trigger ON UPDATE do tabeli T1.

PS. Jeśli baza znajduje się na innym serwerze operacja taka jest niewykonalna.
kuna11
Wyskrobałem coś takiego:
  1. DROP TRIGGER IF EXISTS `historia_aktualizacji`;
  2. DELIMITER //
  3. CREATE TRIGGER `historia_aktualizacji` AFTER UPDATE ON `T1`
  4. FOR EACH ROW BEGIN
  5. IF NEW.nazwa != OLD.nazwa THEN
  6. INSERT INTO T2 (`id`, `tytul`, `data`) VALUES (NEW.page_id, NEW.nazwa, NEW.date);
  7. END IF;
  8. END
  9. //
  10. DELIMITER


Najbardziej zastanawia mnie ta część :

INSERT INTO T2 (`id`, `tytul`, `data`) VALUES (OLD.page_id, OLD.nazwa, OLD.date);

Aktualizacja ma być wtedy gdy w tabeli T1 zmieni się 'nazwa', ale w tabeli T2 nie ma pola 'nazwa' tylko 'tytuł' i analogicznie zamiast 'page_id' jest 'id', czy w takim wypadku, ten kod który stworzyłem będzie działał prawidłowo ?

No i najważniejsze, gdzie mam podać info, że tabela T2 należy do innej bazy (wszystkie bazy na jednym serwerze) ?
mmmmmmm
INSERT INTO `nazwa bazy`.T2
b4rt3kk
Cytat(kuna11 @ 7.10.2013, 22:17:00 ) *
Wyskrobałem coś takiego:
  1. DROP TRIGGER IF EXISTS `historia_aktualizacji`;
  2. DELIMITER //
  3. CREATE TRIGGER `historia_aktualizacji` AFTER UPDATE ON `T1`
  4. FOR EACH ROW BEGIN
  5. IF NEW.nazwa != OLD.nazwa THEN
  6. INSERT INTO T2 (`id`, `tytul`, `data`) VALUES (NEW.page_id, NEW.nazwa, NEW.date);
  7. END IF;
  8. END
  9. //
  10. DELIMITER


Najbardziej zastanawia mnie ta część :

INSERT INTO T2 (`id`, `tytul`, `data`) VALUES (OLD.page_id, OLD.nazwa, OLD.date);

Aktualizacja ma być wtedy gdy w tabeli T1 zmieni się 'nazwa', ale w tabeli T2 nie ma pola 'nazwa' tylko 'tytuł' i analogicznie zamiast 'page_id' jest 'id', czy w takim wypadku, ten kod który stworzyłem będzie działał prawidłowo ?

No i najważniejsze, gdzie mam podać info, że tabela T2 należy do innej bazy (wszystkie bazy na jednym serwerze) ?


Nie będzie żadnego problemu, kod będzie działał prawidłowo pod warunkiem, że wawrtości OLD mają typ zgodny z typami kolumn tabeli T2. A co do wyboru bazy zrób tak jak napisał mmmmmm.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.