-
Notifications
You must be signed in to change notification settings - Fork 111
Expand file tree
/
Copy pathtSQLt.ApplyTrigger.ssp.sql
More file actions
41 lines (33 loc) · 1.41 KB
/
tSQLt.ApplyTrigger.ssp.sql
File metadata and controls
41 lines (33 loc) · 1.41 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
IF OBJECT_ID('tSQLt.ApplyTrigger') IS NOT NULL DROP PROCEDURE tSQLt.ApplyTrigger;
GO
---Build+
CREATE PROCEDURE tSQLt.ApplyTrigger
@TableName NVARCHAR(MAX),
@TriggerName NVARCHAR(MAX)
AS
BEGIN
DECLARE @OrgTableObjectId INT;
DECLARE @NewNameOfOriginalTrigger NVARCHAR(MAX);
SELECT @OrgTableObjectId = OrgTableObjectId FROM tSQLt.Private_GetOriginalTableInfo(OBJECT_ID(@TableName)) orgTbl
IF(@OrgTableObjectId IS NULL)
BEGIN
RAISERROR('%s does not exist or was not faked by tSQLt.FakeTable.', 16, 10, @TableName);
END;
DECLARE @FullTriggerName NVARCHAR(MAX);
DECLARE @TriggerObjectId INT;
SELECT @FullTriggerName = QUOTENAME(SCHEMA_NAME(schema_id))+'.'+QUOTENAME(name), @TriggerObjectId = object_id
FROM sys.objects WHERE PARSENAME(@TriggerName,1) = name AND parent_object_id = @OrgTableObjectId;
DECLARE @TriggerCode NVARCHAR(MAX);
SELECT @TriggerCode = m.definition
FROM sys.sql_modules m
WHERE m.object_id = @TriggerObjectId;
IF (@TriggerCode IS NULL)
BEGIN
RAISERROR('%s is not a trigger on %s', 16, 10, @TriggerName, @TableName);
END;
EXEC tSQLt.RemoveObject @ObjectName = @FullTriggerName, @NewName = @NewNameOfOriginalTrigger OUTPUT;
EXEC(@TriggerCode);
EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName = @FullTriggerName, @ObjectType = N'TRIGGER', @NewNameOfOriginalObject = @NewNameOfOriginalTrigger;
END;
---Build-
GO