-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwyzwalacz_do_archiwum.sql
49 lines (39 loc) · 1.26 KB
/
wyzwalacz_do_archiwum.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
-- Wyzwalacz który przenosi trenera po jego usuniêciu do tablei trenerzyArchiwum
-- Usuwa równie¿ wszystkie inne powi¹zania
USE SSW
GO
if exists (SELECT 1 FROM sys.objects WHERE type='TR' AND name='do_archiwum')
DROP TRIGGER do_archiwum
GO
CREATE TRIGGER do_archiwum
ON SSW..trenerzy
INSTEAD OF DELETE
AS
BEGIN
DELETE FROM SSW..zapisy
WHERE zajeciaId IN (SELECT z.id FROM SSW..zajecia AS z WHERE z.trenerId IN (SELECT d.id FROM deleted AS d));
DELETE FROM SSW..zajecia
WHERE trenerId IN (SELECT d.id FROM deleted AS d);
DELETE FROM SSW..kwalifikacje
WHERE trenerId IN (SELECT d.id FROM deleted AS d);
DELETE FROM SSW..trenerzy
WHERE id IN (SELECT d.id FROM deleted AS d);
DECLARE @ilosc int;
SET @ilosc = (SELECT COUNT(*) FROM deleted AS d)
INSERT INTO SSW..trenerzyArchiwum SELECT * FROM deleted;
UPDATE SSW..trenerzyArchiwum
SET dataZwol = GETDATE()
WHERE id IN (SELECT d.id FROM deleted AS d)
INSERT INTO SSW..dziennik_zdarzen
VALUES ('trenerzy',
'Zwolniono ' + CAST(@ilosc AS varchar) + ' trenerów',
GETDATE());
END
GO
-------------------------------------------------------------------------
-- SPRAWDZENIE --
SELECT * FROM SSW..trenerzy
SELECT * FROM SSW..trenerzyArchiwum
DELETE FROM SSW..trenerzy
WHERE id = 2;
SELECT * FROM SSW..dziennik_zdarzen