Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:ztb:2010:projekty:menadzer_szkolen:start [2010/06/10 20:44] ztb2010 |
pl:dydaktyka:ztb:2010:projekty:menadzer_szkolen:start [2019/06/27 15:50] (aktualna) |
| |
\\ | \\ |
| |
| ===== Wyzwalacze ===== |
| Implementacja dodatkowych wyzwalaczy była konieczna ze względu na to, że MS SQL Server nie dopuszcza definiowania kluczy obcych, które tworzyły by w bazie zapętlone wywołania //ON DELETE ACTION// lub //ON UPDATE ACTION//. |
| |
| ==== Wyzwalacze dla tabeli Template ==== |
| |
| Wyzwalacz utrzymuje więzy integralności z innymi tabelami w przypadku usuwania danych. |
| <code> |
| CREATE TRIGGER [dbo].[ForDeleteTemplateTrigger] |
| ON [dbo].[Template] |
| FOR DELETE |
| AS |
| -- aktualizacja tabeli Training |
| |
| UPDATE dbo.Training |
| SET ProtocolTemplateId = NULL |
| WHERE ProtocolTemplateId IN (SELECT Id FROM deleted) |
| |
| UPDATE dbo.Training |
| SET CertificateTemplateId = NULL |
| WHERE CertificateTemplateId IN (SELECT Id FROM deleted) |
| |
| -- aktualizacja tabeli TrainingCategory |
| |
| UPDATE dbo.TrainingCategory |
| SET ProtocolTemplateId = NULL |
| WHERE ProtocolTemplateId IN (SELECT Id FROM deleted) |
| |
| UPDATE dbo.TrainingCategory |
| SET CertificateTemplateId = NULL |
| WHERE CertificateTemplateId IN (SELECT Id FROM deleted) |
| |
| GO |
| </code> |
| \\ |
| Wyzwalacz utrzymuje więzy integralności z innymi tabelami w przypadku modyfikowania klucza głównego. |
| <code> |
| -- Utrzymuje więzy integralności innych tabel z tabelą Template w przypadku modyfikowania klucza głównego. |
| CREATE TRIGGER [dbo].[ForUpdateTemplateTrigger] |
| ON [dbo].[Template] |
| FOR UPDATE |
| AS |
| -- aktualizacja tabel TrainingCategory i Training |
| |
| IF UPDATE(Id) |
| BEGIN |
| DECLARE @insertedId uniqueidentifier, @deletedId uniqueidentifier |
| |
| DECLARE ForUpdateInsertedRowsCursor CURSOR FOR |
| SELECT Id FROM inserted |
| DECLARE ForUpdateDeletedRowsCursor CURSOR FOR |
| SELECT Id FROM deleted |
| |
| OPEN ForUpdateInsertedRowsCursor |
| OPEN ForUpdateDeletedRowsCursor |
| |
| FETCH NEXT FROM ForUpdateInsertedRowsCursor |
| INTO @insertedId |
| FETCH NEXT FROM ForUpdateDeletedRowsCursor |
| INTO @deletedId |
| WHILE @@FETCH_STATUS = 0 |
| BEGIN |
| |
| -- aktualizacja tabeli TrainingCategory |
| |
| UPDATE dbo.TrainingCategory |
| SET ProtocolTemplateId = @insertedId |
| WHERE ProtocolTemplateId = @deletedId |
| |
| UPDATE dbo.TrainingCategory |
| SET CertificateTemplateId = @insertedId |
| WHERE CertificateTemplateId = @deletedId |
| |
| -- aktualizacja tabeli Training |
| |
| UPDATE dbo.Training |
| SET ProtocolTemplateId = @insertedId |
| WHERE ProtocolTemplateId = @deletedId |
| |
| UPDATE dbo.Training |
| SET CertificateTemplateId = @insertedId |
| WHERE CertificateTemplateId = @deletedId |
| |
| -- wczytanie kolejnego rekordu |
| |
| FETCH NEXT FROM ForUpdateInsertedRowsCursor |
| INTO @insertedId |
| FETCH NEXT FROM ForUpdateDeletedRowsCursor |
| INTO @deletedId |
| END |
| |
| CLOSE ForUpdateInsertedRowsCursor |
| CLOSE ForUpdateDeletedRowsCursor |
| DEALLOCATE ForUpdateInsertedRowsCursor |
| DEALLOCATE ForUpdateDeletedRowsCursor |
| END |
| </code> |
| |
| ==== Wyzwalacze dla tabeli TrainingCategory ==== |
| |
| Wyzwalacz utrzymuje więzy integralności z innymi tabelami w przypadku usuwania danych. |
| <code> |
| CREATE TRIGGER [dbo].[DeleteTrainingCategoryTrigger] |
| ON [dbo].[TrainingCategory] |
| FOR DELETE |
| AS |
| -- aktualizacja tabeli Training |
| |
| UPDATE dbo.Training |
| SET TrainingCategoryId = NULL |
| WHERE TrainingCategoryId IN (SELECT Id FROM deleted) |
| GO |
| </code> |
| \\ |
| Wyzwalacz utrzymuje więzy integralności z innymi tabelami w przypadku modyfikowania klucza głównego. |
| <code> |
| CREATE TRIGGER [dbo].[UpdateTrainingCategoryTrigger] |
| ON [dbo].[TrainingCategory] |
| FOR UPDATE |
| AS |
| -- aktualizacja tabeli Training |
| |
| IF UPDATE(Id) |
| BEGIN |
| DECLARE @insertedId uniqueidentifier, @deletedId uniqueidentifier |
| |
| DECLARE InsertedRowsCursor CURSOR FOR |
| SELECT Id FROM inserted |
| DECLARE DeletedRowsCursor CURSOR FOR |
| SELECT Id FROM deleted |
| |
| OPEN InsertedRowsCursor |
| OPEN DeletedRowsCursor |
| |
| FETCH NEXT FROM InsertedRowsCursor |
| INTO @insertedId |
| FETCH NEXT FROM DeletedRowsCursor |
| INTO @deletedId |
| WHILE @@FETCH_STATUS = 0 |
| BEGIN |
| UPDATE dbo.Training |
| SET TrainingCategoryId = @insertedId |
| WHERE TrainingCategoryId = @deletedId |
| |
| FETCH NEXT FROM InsertedRowsCursor |
| INTO @insertedId |
| FETCH NEXT FROM DeletedRowsCursor |
| INTO @deletedId |
| END |
| |
| CLOSE InsertedRowsCursor |
| CLOSE DeletedRowsCursor |
| DEALLOCATE InsertedRowsCursor |
| DEALLOCATE DeletedRowsCursor |
| END |
| </code> |
| |
===== Widoki ===== | ===== Widoki ===== |
| |
RETURN | RETURN |
</code> | </code> |
| \\ |
| ====== Diagram przypadków użycia ====== |
| |
| {{:pl:dydaktyka:ztb:2010:projekty:menadzer_szkolen:przypadki_uzycia.gif|}} |
| |
| |
| \\ |
| ====== Diagram klas ====== |
| {{:pl:dydaktyka:ztb:2010:projekty:menadzer_szkolen:classdiagram.gif|}} |
| |
| \\ |
| ====== Diagramy sekwencji ====== |
| \\ |
| ===== Przeprowadzenie szkolenia ===== |
| {{:pl:dydaktyka:ztb:2010:projekty:menadzer_szkolen:diagram_sekwencji.gif|}} |
| |