-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathVIDEOS_TRIGGERS.sql
More file actions
59 lines (55 loc) · 1.99 KB
/
VIDEOS_TRIGGERS.sql
File metadata and controls
59 lines (55 loc) · 1.99 KB
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
50
51
52
53
54
55
56
57
58
59
USE VideoHosting;
PRINT N'➕ TRIGGER JOB IS STARTED';
GO
CREATE or ALTER TRIGGER [VIDEO_INSTEAD_INSERT] ON [VIDEOS]
INSTEAD OF INSERT AS
BEGIN
IF EXISTS (
SELECT
[USER].[USERNAME] [USER],
[AGE_REST].[AGE] [AGE_RESTRICTIONS]
FROM [VIDEOS] [VIDEO]
INNER JOIN [USERS] [USER] ON [VIDEO].[USER_UID]=[USER].[UID]
INNER JOIN [AGE_RESTRICTIONS] [AGE_REST] ON [VIDEO].[AGE_RESTRICTIONS_UID]=[AGE_REST].[UID]
WHERE [AGE_REST].[AGE] > DATEDIFF(YEAR, [USER].[BIRTHDAY_DT], GETDATE())
) BEGIN
RAISERROR('The user is not old enough to create this video.', 16, 1);
RETURN;
END;
INSERT INTO [VIDEOS] ([UID], [TITLE], [DESCRIPTION], [PATH], [CREATED_DT], [USER_UID], [ACCESS_UID], [AGE_RESTRICTIONS_UID])
SELECT [UID], [TITLE], [DESCRIPTION], [PATH], [CREATED_DT], [USER_UID], [ACCESS_UID], [AGE_RESTRICTIONS_UID]
FROM INSERTED;
END
GO
PRINT N'➕ VIDEO [ INSTEAD INSERT ] CREATED';
GO
CREATE or ALTER TRIGGER [VIDEO_INSTEAD_UPDATE] ON [VIDEOS]
INSTEAD OF UPDATE AS
BEGIN
IF EXISTS (
SELECT
[USER].[USERNAME] [USER],
[AGE_REST].[AGE] [AGE_RESTRICTIONS]
FROM [VIDEOS] [VIDEO]
INNER JOIN [USERS] [USER] ON [VIDEO].[USER_UID]=[USER].[UID]
INNER JOIN [AGE_RESTRICTIONS] [AGE_REST] ON [VIDEO].[AGE_RESTRICTIONS_UID]=[AGE_REST].[UID]
WHERE [AGE_REST].[AGE] > DATEDIFF(YEAR, [USER].[BIRTHDAY_DT], GETDATE())
)
BEGIN
RAISERROR('The user is not old enough to create a video.', 16, 1);
RETURN;
END
UPDATE [VIDEOS]
SET
[TITLE] = [NEW].[TITLE],
[DESCRIPTION] = [NEW].[DESCRIPTION],
[PATH] = [NEW].[PATH],
[CREATED_DT] = [NEW].[CREATED_DT],
[USER_UID] = [NEW].[USER_UID],
[ACCESS_UID] = [NEW].[ACCESS_UID],
[AGE_RESTRICTIONS_UID] = [NEW].[AGE_RESTRICTIONS_UID]
FROM [VIDEOS] [VIDEO]
INNER JOIN INSERTED [NEW] ON [VIDEO].[UID] = [NEW].[UID];
END;
GO
PRINT N'➕ VIDEO [ INSTEAD UPDATE] CREATED';