Witam, zwracam się do Was drodzy forumowicze z prośbą o pomoc w napisaniu triggera do bazy danych, który w przypadku obsłużenia więcej niż 4 pacjentów przez danego lekarza w ciągu danego dnia zapisze w specjalnej tabeli wiadomość, że ten właśnie lekarz obsłużył więcej niż 4 pacjentów. Poniżej prezentuje schemat bazy oraz to co próbowałem pisać
create table Pacjenci (
Id int primary key,
Imie varchar(25),
Nazwisko varchar(25))
Insert into Pacjenci values
(1,'Anna','Pierwsza'),
(2,'Tomasz','Drugi'),
(3,'Krzysztof','Trzeci'),
(4,'Jan','Czwarty'),
(5,'Cezary','Piąty');
create table Lekarze(
Id int primary key,
Imie varchar(25),
Nazwisko varchar(25)
)
Insert into Lekarze values
(1,'Jacek','Paździoch'),
(2,'Alona','Nowak'),
(3,'Helga','Kowalska'),
(4,'Marcin','Krzynówek'),
(5,'Jadwiga','Kiepska');
create table Specjalizacje(
Id int primary key,
Nazwa varchar(25)
)
Insert into dbo.Specjalizacje values
(1,'Onkolog'),
(2,'Pediatra'),
(3,'Chirurg'),
(4,'Okulista'),
(5,'Neurolog');
create table Kwalifikacje (
IdLekarza int foreign key references Lekarze(Id),
IdSpecjalizacji int foreign key references Specjalizacje(Id),
OdKiedy Date,
constraint PK_Kwalifikacje primary key clustered (IDlekarza, IdSpecjalizacji)
)
insert into Kwalifikacje values
(1,1,'05-01-2016'),
(2,2,'01-02-2000'),
(3,3,'01-02-1995'),
(4,4,'01-02-2001'),
(5,5,'01-02-2002');
create table Gabinety(
Id int primary key,
Nazwa varchar(25)
)
declare @auto int
set @auto=1
while @auto < 51
begin
insert into Gabinety values
(@auto,'Socjal')
set @auto=@auto+1
end
create table Terminy(
Id int primary key,
IdGabinetu int foreign key references Gabinety(Id),
IdLekarza int foreign key references Lekarze(Id),
OdGodziny Time,
DoGodziny Time,
Dzien Date)
insert into Terminy values
(1,1,1,'10:00:00','12:00:00','2016-11-21'),
(2,2,2,'12:00:00','14:00:00','2016-11-22'),
(3,3,3,'15:00:00','16:00:00','2016-11-23'),
(4,4,4,'10:00:00','13:00:00','2016-11-24'),
(5,5,5,'09:00:00','11:00:00','2016-11-25'),
(6,6,1,'11:00:00','13:00:00','2016-11-28');
create table Wizyty(
Id int primary key,
IdPacjenta int foreign key references Pacjenci(Id),
IdTerminu int foreign key references Terminy(Id),
Godzina Time
)
insert into Wizyty values
(1,1,1,'10:00:00'),
(2,2,2,'12:00:00'),
(3,3,3,'15:00:00'),
(4,4,4,'10:00:00'),
(5,5,5,'09:00:00'),
(6,2,6,'11:00:00'),
(7,1,6,'11:20:00');
create table Stany(
Id int primary key,
IdWizyty int foreign key references Wizyty(Id),
Stan char check (Stan in ('n','o','z')), -- n - planowana, o - obsługiwana, z - zakończona
DzienZmiany Date,
CzasZmiany Time)
insert into Stany values
(1,1,'n','2016-11-21','14:00:00'),
(2,2,'o','2016-11-22','11:00:00'),
(3,3,'z','2016-11-23','10:00:00'),
(4,4,'n','2016-11-24','10:00:00'),
(5,5,'o','2016-11-25','11:00:00');
create table Karta(
Id int primary key,
IdPacjenta int foreign key references Pacjenci(Id),
IdLekarza int foreign key references Lekarze(Id),
IdWizyty int foreign key references Wizyty(Id),
Opis varchar(500)
)
insert into Karta values
(1,1,1,1,'Przeziębienie'),
(2,2,2,2,'Wysoka temperatura'),
(3,3,3,3,'Wysokie ciśnienie'),
(4,4,4,4,'Objawy zapalenia płuc'),
(5,5,5,5,'Niestrawność');
CREATE TRIGGER dbo.LAB04
on dbo.Wizyty
FOR
INSERT
as
declare @termin numeric(2)
declare @id numeric(2)
declare @pacjent numeric(2)
declare @czas time
select @termin = IdTerminu from inserted
select @id = Id from inserted
select @pacjent =IdPacjenta from inserted
select @czas = Godzina from inserted
select * from dbo.Wizyty where IdTerminu=@termin
IF (select count(IdTerminu) from dbo.Wizyty where @termin>4) = 0
BEGIN
-- tutaj nie wiem jak zrobić, żeby tworzyło tabele i wyświetlało w niej to co ma robić trigger
END