Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prosze o pomoc w napisaniu triggera
Forum PHP.pl > Forum > Bazy danych > MySQL
Adrian84
Witam mam nastepujacy problem. Otoz chce napisac trigger ktory wygeneruje mi date wygasniecia lokaty dla ktorkoterminowej (+3miesiace) dla dlugoterminowej (+24miesiace) po wprowadzeniu daty zakupu lokaty... Struktura tabeli wyglada nastepujaco:

  1. CREATE TABLE `Lokaty` (
  2. `id` INT NOT NULL AUTO_INCREMENT ,
  3. `id_typ_lokaty` int NOT NULL ,
  4. `data_zal` date NOT NULL ,
  5. `stan_lokaty` float( 20, 2 ) UNSIGNED NOT NULL ,
  6. `data_wygasniecia` date ,
  7. PRIMARY KEY ( `id` )
  8. );


Wiem ogolnie jak wyglada skladnia wyzwalacza ale nie wiem jak sie za to zabrac mialby moze ktos jakis pomysl?? Z gory dziekuje za pomoc.

Pozdro

Witam moze teraz mi ktos pomoze

  1. CREATE TRIGGER aktualizacja AFTER INSERT ON lokaty
  2. FOR each row
  3. begin declare x date
  4. SELECT data_zal INTO x FROM lokaty WHERE id=new.id
  5. UPDATE Lokaty SET data_wygasniecia = SELECT DATE_ADD('x', INTERVAL 1 MONTH)
  6. end
  7. ;


wywala mi blad: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT data_zal into x FROM lokaty WHERE id=new.id
UPDATE Lokaty SET data_wygas' at line 4

moze mi ktos powiedziec co robie zle?? pozdro
lord_t
  1. CREATE TRIGGER aktualizacja AFTER INSERT ON lokaty
  2. FOR each row
  3. begin declare x date;
  4. SELECT data_zal INTO x FROM lokaty WHERE id=new.id;
  5. UPDATE Lokaty SET data_wygasniecia = SELECT DATE_ADD('x', INTERVAL 1 MONTH);
  6. end;


A gdzie średniki proszę pana? (tu ^poprawione)
Adrian84
Nawet z poprawionymi srednikami cos jest nie tak. Moze jest gdzies jakis blad w skladni triggera? Triggerow dopiero sie ucze wiec nie wiem jeszcze za bardzo gdzie moge robic blad...
lord_t
1. "new" (jeśli dobrze się dowiedziałem) może być używany tylko, kiedy wyzwalacz działa "before"; w "after" nie będzie dostępu do "new".

2. Ja bym też przeniósł "declare x date;" przed "begin". Ale to raczej nie powoduje błędu.
Adrian84
hmmm dzieki za zainteresowanie poczekamy moze sie ktos jeszcze wypowie. Strasznie mi na tym zalezy bo musze jutro na projekt przyniesc gotowe wyzwalacze a narazie nie mam ani jednego... ale jak poradze z jednym to pozniej juz poleci... smile.gif
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.