SQL Server 2012 テーブルにトリガーを書いています。トリガー自体は正しく機能していますが、トリガーからテーブルを更新した後に電子メールを送信するステートメントを追加すると、ELSE ステートメントがエラーで強調表示されます。
ELSE 付近の不適切な構文
構文エラーがあるかもしれませんが、指摘できません。
「;」を追加しようとしました 10行目と11行目の最後にありますが、うまくいきません。11行目をコメントすると、トリガー全体が正しく機能します
IF の後に 2 つのステートメント/アクションを配置する最良の方法は何でしょうか?
1 CREATE TRIGGER dbo.MembersNameToCategories ON dbo.Members
2 AFTER UPDATE
3 AS
4
5 BEGIN
6 DECLARE @OldName NVARCHAR(150) = (SELECT name FROM Deleted)
7 DECLARE @NewName NVARCHAR(150) = (SELECT name FROM Inserted)
8 DECLARE @BodyTXT nvarchar(MAX) = 'Customer: ' + @oldName + ' has been modified with new name : ' +@NewName + '.'
9 IF EXISTS (SELECT NULL FROM Categories AS c WHERE c.Name = @OldName)
10 UPDATE Categories SET Name = @NewName WHERE Name = @OldName AND CategoryType = 7
11 EXEC msdb.dbo.sp_send_dbmail @profile_name = 'MyProfile',@recipients = 'tous@mycompany.ca',@body_format = 'HTML',@body = @BodyTXT,@subject = 'A customer name has been modified'
12 ELSE
13 INSERT INTO Categories (ID,Modified,ModifiedByID,CategoryType,Name,Colour,RANK,MemberType,Private,DefaultCategory,Description,SendNotification)
14 VALUES (
15 NEWID(),
16 GETDATE(),
17 dbo.fnmyid(),
18 7,
19 @NewName,
20 -8000,
21 9999,
22 0,
23 0,
24 0,
25 N'',
26 0
27 )
28 END;
29 GO
ありがとう - マーティン