-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathUpdateTopic.sql
69 lines (63 loc) · 2.86 KB
/
UpdateTopic.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
--------------------------------------------------------------------------------------------------------------------------------
-- UPDATE TOPIC
--------------------------------------------------------------------------------------------------------------------------------
-- Used to update the attributes of a provided topic, including core, indexed, and extended attributes.
--------------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateTopic]
@TopicID INT ,
@Key VARCHAR(128) = NULL ,
@ContentType VARCHAR(128) = NULL ,
@Attributes AttributeValues READONLY ,
@ExtendedAttributes XML = NULL ,
@Version DATETIME2(7) = NULL ,
@DeleteUnmatched BIT = 0
AS
--------------------------------------------------------------------------------------------------------------------------------
-- SET DEFAULT VERSION DATETIME
--------------------------------------------------------------------------------------------------------------------------------
IF @Version IS NULL
SET @Version = SYSUTCDATETIME()
--------------------------------------------------------------------------------------------------------------------------------
-- UPDATE KEY ATTRIBUTES
--------------------------------------------------------------------------------------------------------------------------------
IF @Key IS NOT NULL OR @ContentType IS NOT NULL
BEGIN
UPDATE Topics
SET TopicKey =
CASE
WHEN @Key IS NULL
THEN TopicKey
ELSE @Key
END,
ContentType =
CASE
WHEN @ContentType IS NULL
THEN TopicKey
ELSE @ContentType
END,
LastModified = @Version
WHERE TopicID = @TopicID
END
--------------------------------------------------------------------------------------------------------------------------------
-- UPDATE ATTRIBUTES
--------------------------------------------------------------------------------------------------------------------------------
IF EXISTS (SELECT TOP 1 NULL FROM @Attributes)
BEGIN
EXEC UpdateAttributes @TopicID,
@Attributes,
@Version,
@DeleteUnmatched
END
--------------------------------------------------------------------------------------------------------------------------------
-- ADD EXTENDED ATTRIBUTES, IF CHANGED
--------------------------------------------------------------------------------------------------------------------------------
IF @ExtendedAttributes IS NOT NULL
BEGIN
EXEC UpdateExtendedAttributes @TopicID,
@ExtendedAttributes,
@Version
END
--------------------------------------------------------------------------------------------------------------------------------
-- RETURN TOPIC ID
--------------------------------------------------------------------------------------------------------------------------------
RETURN @TopicID