Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

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)
Linia 79: Linia 79:
  
 \\ \\
 +
 +===== 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 =====
  
Linia 243: Linia 400:
  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|}}
 +
pl/dydaktyka/ztb/2010/projekty/menadzer_szkolen/start.1276195442.txt.gz · ostatnio zmienione: 2019/06/27 15:56 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0