Курсовая работа: Разработка физической модели базы данных Учёт затрат на медицинские услуги
ON T.IDTalon=DT.IDTalon
WHERE DT.Ishod='Смерть'
UNION
SELECT DISTINCT IDPacient FROM
Karta K
INNER JOIN DiagnKarta DK
ON K.IDKarta=DK.IDKarta
WHERE DK.Ishod='Смерть')
))
BEGIN
RAISERROR(‘Пациент умер!',16,1)
ROLLBACK TRAN
END
Аналогично написан триггер, запрещающий ввод информации по умершему в отношение Karta (Карта выбывшего больного).
Как уже было сказано, финансирование ЛПУ осуществляется на основании приказа об оплате. Но у специалиста не должно быть возможности удалить входную документацию (талоны и карты). Для этого был написан триггер, заперщающий удаление талонов и карт, по которым было проведено финансирование:
CREATE TRIGGER StopDelTalon
ON Talon
FOR DELETE
AS
IF (EXISTS( SELECT 'true' FROM DELETED
WHERE DELETED.Date BETWEEN (SELECT MAX(BeginPer) FROM Prikas WHERE BeginPer<DELETED.Date AND IDLPU=DELETED.IDLPU)
AND (SELECT MAX(BeginPer) FROM Prikas
WHERE EndPer>DELETED.Date AND IDLPU=DELETED.IDLPU)))
BEGIN
RAISERROR('Нельзя удалить талон, так как оплата по нему уже производилась!',16,1)
ROLLBACK TRAN
END
Аналогично был написан триггер, запрещающий удаление карт выбывших больных, по которым уже производилось финансирование.
Таким образом, при помощи ограничений и триггеров мы получили базу данных, обладающую свойством целостности.