konto usunięte

Temat: MySQL trigger prosze o pomoc

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:

CREATE TABLE `Lokaty` (
`id` INT NOT NULL AUTO_INCREMENT ,
`id_typ_lokaty` int NOT NULL ,
`data_zal` date NOT NULL ,
`stan_lokaty` float( 20, 2 ) unsigned NOT NULL ,
`data_wygasniecia` date ,
PRIMARY KEY ( `id` )
);

Napisalem cos takiego ale wysypuje sie blad i nie wiem co jest grane:

decrimer //
create trigger aktualizacja AFTER insert on lokaty
for each row
begin declare x date
SELECT data_zal into x FROM lokaty WHERE id=new.id
UPDATE Lokaty SET data_wygasniecia = DATE_ADD('x', INTERVAL 1 MONTH)
end //
Piotr Bandyk

Piotr Bandyk E-commerce,
programowanie

Temat: MySQL trigger prosze o pomoc

Sprawdź czy twoja baza to wersja nr 5, jeżeli tak to przez phpmyadmin :

create trigger aktualizacja AFTER insert on lokaty
for each row
begin declare x date;
SELECT data_zal into x FROM lokaty WHERE id=new.id;
UPDATE Lokaty SET data_wygasniecia = DATE_ADD('x', INTERVAL 1 MONTH);
end

Pole Separator zostaw puste i będzie oki. Jeżeli przez konsole to daj:

delimiter //
create trigger aktualizacja AFTER insert on lokaty
for each row
begin declare x date;
SELECT data_zal into x FROM lokaty WHERE id=new.id;
UPDATE Lokaty SET data_wygasniecia = DATE_ADD('x', INTERVAL 1 MONTH);
end
//
Jakub L.

Jakub L. Programista

Temat: MySQL trigger prosze o pomoc

A nie da się zrobić odpowiedniego defaulta, coś w deseń (niesprawdzony, niestandardowy SQL oparty na Postgresie):

CREATE TABLE `Lokaty` (
...
`id_typ_lokaty` int NOT NULL ,
`data_zal` date NOT NULL ,
`data_wygasniecia` date default case when id_typ_lokaty=3 then data_zal + 1M when id_typ_lokaty=24 then data_zal + 24 else error end
);

?

Następna dyskusja:

[mySQL] Trigger kopiujacy d...




Wyślij zaproszenie do