Trigger - SQL

0

Witam,
mam problem ze stworzeniem triggera w mojej bazie danych. Moja baza danych ma przedstawiać bazę ośrodka zdrowia. Trigger miałby działać mniej więcej tak, że kiedy lekarz wpisuje w tabeli 'Wizyta' kolejną wizytę pacjenta, chciałabym, żeby data tej wizyty automatycznie aktualizowała się w tabeli 'Pacjenci' przy danym pacjencie.
Próbowałam to zrobić w ten sposób:
CREATE TRIGGER NasteWizyta ON Wizyta
AFTER INSERT, UPDATE
AS
DECLARE @id_wiz int
DECLARE @id_pac int
DECLARE @id_prac int
DECLARE @id_us int
DECLARE @id_cen int
SET @data datetime
SELECT @id_wiz = Wizyta.ID_Wizyta from Wizyta
SELECT @id_pac = Wizyta.ID_Pacjent from Wizyta
SELECT @id_prac = Wizyta.ID_Pracownik from Wizyta
SELECT @id_us = Wizyta.ID_Usluga from Wizyta
SELECT @id_cen = Wizyta.ID_Cena from Wizyta
SELECT @data = Wizyta.Data_wizyty from Wizyta
SET @d = @data
UPDATE Pacjenci SET NastepnaWizyta = @d WHERE ID_Pacjent = @id_pac
GO

0

Po co deklarujesz te zmienne? Popełniasz najczęstszy IMO błąd i zapominasz ze update może zmieniać klika wierszy. Dodatkowo nie korzystasz z tabeli inserted tylko z tabeli wizyta.

CREATE TRIGGER NasteWizyta ON Wizyta
AFTER INSERT, UPDATE
AS
Set nocount on
UPDATE 
   Pacjenci 
SET 
   NastepnaWizyta = data_wizyty
From
   pacjenci p
   inner join inserted i on i.id_pacjenta=p.id_pacjenta
GO
0

A co jeśli pacjent już następną wizytę ma? Co gdy jest wpisana wartość mniejsza od aktualnej, a co jak większa? a co, gdy (nie daj Bóg) w inserted będzie dwa razy ten sam pacjent z różnymi datami (mało prawdopodobne, lecz nie niemożłiwe)

0

Dokładnie, jest to projekt na zaliczenie przedmiotu i jedyne czego mi brakuje to właśnie trigger.

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