Я видел, что в некоторых статьях упоминается возможность триггера в представлении, запускающего при вставке, обновлении или удалении в одну из базовых таблиц, из которой создается представление.
Однако я не могучтобы получить простой пример для работы.
CREATE TABLE [Test].[Data] (
Id INT PRIMARY KEY IDENTITY (1,1),
Data VARCHAR(255) NOT NULL,
);
GO
CREATE VIEW [Test].[View] AS SELECT * FROM [Test].[Data];
GO
CREATE TABLE [Test].[Queue] (
Id INT PRIMARY KEY IDENTITY (1,1),
DataId INT NOT NULL,
Action VARCHAR(255) NOT NULL,
Timestamp DATETIME NOT NULL,
);
GO
CREATE TRIGGER InsertTrigger ON [Test].[View] INSTEAD OF INSERT AS
BEGIN
DECLARE @DataId INT;
DECLARE @Timestamp DATETIME;
SET @DataId = (SELECT Id FROM INSERTED);
SET @Timestamp = GETDATE();
INSERT INTO [Test].[Queue] (DataId, Action, Timestamp) VALUES (@DataId, 'Insert', @Timestamp)
END
GO
ENABLE TRIGGER InsertTrigger ON [Test].[View];
GO
INSERT INTO [Test].[Data] (Data) VALUES ('Testdata');
Триггер не срабатывает, вышеописанное невозможно, или что-то не так с моим Sql?
Редактировать: Хотя ответили, я бы хотелуточнить вопрос.Идея состояла в том, чтобы вызвать срабатывание триггера в представлении, когда была вставка в базовую таблицу, а не само представление.