Witam, staram się przepisać bazę danych oraz oprogramowanie do niej na PostgreSQL, udało mi się przepisać skrypt tworzący, funkcje, widoki itd ale na triggerach mam problem :(
Mam wrażenie że postgres jest bardzo ubogi w stosunku do mssql ponieważ nie mogę nawet znaleźć porządnego poradnika. Proszę o pomoc z tym wyzwalaczem:
-- Wyzwalacz który zamiast usunąć z bazy danych stanowisko,
-- archiwizuje je w tej samej tabeli w kolumnach które normalnie są nieużywane i mają wartość NULL.
-- W przypadku gdy stanowisko zostało już wcześniej usunięte np, przez kogoś innego, wyzwalacz wydrukuje specjalną informację.
CREATE TRIGGER del_stan ON stanowisko
INSTEAD OF DELETE
AS
DECLARE @id INT, @name Varchar(20)
SET @id=(SELECT id_stanowisko FROM deleted)
SET @name=(SELECT nazwa FROM deleted)
BEGIN
IF (77777.00)=(SELECT stara_pensja FROM stanowisko WHERE id_stanowisko=@id)
BEGIN
PRINT 'Stanowisko '+@name+'zostało zarchiwizowane.'
UPDATE stanowisko SET stara_pensja=pensja_godz WHERE id_stanowisko=@id
UPDATE stanowisko SET stare_godz=min_ilosc_godz WHERE id_stanowisko=@id
UPDATE stanowisko SET data_wygasniecia = GETDATE() WHERE id_stanowisko=@id
UPDATE stanowisko SET pensja_godz = 0 WHERE id_stanowisko=@id
UPDATE stanowisko SET min_ilosc_godz = 0 WHERE id_stanowisko=@id
END
ELSE
BEGIN
PRINT 'Operacja nie powiodła się ponieważ:'
PRINT 'Stanowisko '+@name+'zostało zarchiwizowane wcześniej.'
END
END
GO
mój problem polega na tym że używam tam tabeli 'deleted' a z tego co wyczytałem (w sumie nie wyczytałem bo nie znalazłem info) takiej tabeli w PSQL po prostu nie ma.