У меня есть 3 таблицы, как показано ниже
CREATE TABLE [dbo].[AuditTrail]
(
[AuditId] [INT] IDENTITY(1,1) NOT NULL,
[DateTime] [DATETIME] NOT NULL,
[TableName] [NVARCHAR](255) NOT NULL,
[AuditEntry] [XML] NULL,
CONSTRAINT [PK_AuditTrail]
PRIMARY KEY CLUSTERED (
)
CREATE TABLE [dbo].[Employee]
(
[ID] [UNIQUEIDENTIFIER] NOT NULL DEFAULT (NEWID()),
[NameEmployee] [NVARCHAR](255) NOT NULL,
CONSTRAINT [PK_Employee] PRIMARY KEY CLUSTERED (
)
CREATE TABLE [dbo].[Transaction]
(
[ID] [UNIQUEIDENTIFIER] NOT NULL DEFAULT (NEWID()),
[NameTransaction] [NVARCHAR](255) NOT NULL,
CONSTRAINT [PK_Transaction]
PRIMARY KEY CLUSTERED (
)
И я создал 2 триггера для моей таблицы, который обрабатывает некоторые операции удаления, триггер, который я сделал хорошо.Мой триггер ниже
CREATE TRIGGER AuditEmployee
ON [dbo].[Employee]
AFTER INSERT, DELETE, UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF (SELECT COUNT(*) FROM deleted) > 0
BEGIN
DECLARE @AuditMessage XML
SET @AuditMessage = (select * from deleted for xml auto)
INSERT INTO AuditTrail (DateTime, TableName, AuditEntry)
VALUES (GETDATE(), 'Simple', @AuditMessage)
END
END
GO
CREATE TRIGGER AuditTransaction
ON [dbo].[Transaction]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF (SELECT COUNT(*) FROM deleted) > 0
BEGIN
DECLARE @AuditMessage XML
SET @AuditMessage = (select * from deleted for xml auto)
INSERT INTO AuditTrail (DateTime, TableName, AuditEntry)
VALUES (GETDATE(), 'Simple', @AuditMessage )
end
END
GO
В приведенном выше запросе я создал два триггера для двух таблиц (Employee и Transaction).Данные будут вставлены в таблицу AuditAll, если в обеих таблицах будут удалены данные.
Я хочу спросить, что если у нас есть 10 таблиц, я должен сделать 10 триггеров?Можно ли сделать это в хранимой процедуре, чтобы я не делал триггеры вручную на основе номера моей таблицы?
Если возможно, как это сделать с помощью хранимой процедуры?Пожалуйста, помогите:)