アクションをログに記録するために、すべてのテーブルのトリガーを挿入、更新、削除します。削除、挿入、およびこれらをxmlにラップする前後のデータを取得しています。ただし、一部のログでは値の変更前と更新を表示できません。私のSQL文は次のとおりです。
USE [cop]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[Delete] ON [dbo].[Seanslar]
AFTER DELETE
AS
BEGIN
SET NOCOUNT ON
DECLARE @deleted AS XML
SET @deleted = (select * from deleted for xml AUTO, ELEMENTS XSINIL)
DECLARE @logIslem TINYINT
SET @logIslem = 3
DECLARE @tableName VARCHAR(200)
SELECT @tableName = OBJECT_SCHEMA_NAME( parent_id ) + '.' + OBJECT_NAME( parent_id )
FROM sys.triggers
WHERE object_id = @@PROCID
DECLARE @xmlToChar NVARCHAR(MAX)
SET @xmlToChar = CAST(@deleted AS nvarchar(MAX))
IF LEN(@xmlToChar)<10
BEGIN
IF EXISTS(select * from deleted)
select @xmlToChar = CAST(seans_id AS NVARCHAR(MAX)) from deleted
ELSE
SET @xmlToChar = 'Deleted is empty!'
END
DECLARE @allXml AS XML
SET @allXml = '<'+@tableName+'>'+ @xmlToChar +'</'+@tableName+'>'
INSERT INTO [dbo].[Logla]
([logIslem], [trgKullanici_id], [tabloAdi], [logXml])
VALUES
(@logIslem, SUSER_NAME(), @tableName, @allXml)
END
トリガー内で実行される「SQL文」を学習する方法はありますか?