У меня есть проблема с помощью таблицы с вместо триггера вставки.
Таблица, которую я создал, содержит столбец идентификационных данных. Я должен использовать вместо вставки, включают эту таблицу. Я также должен видеть значение недавно вставленных идентификационных данных из моего триггера, который требует использования ВЫВОДА/В в триггере. Проблема состоит затем в том, что клиенты, которые выполняют, ВСТАВЛЯЮТ, не видят вставленные значения.
Например, я составляю простую таблицу:
CREATE TABLE [MyTable](
[MyID] [int] IDENTITY(1,1) NOT NULL,
[MyBit] [bit] NOT NULL,
CONSTRAINT [PK_MyTable_MyID] PRIMARY KEY NONCLUSTERED
(
[MyID] ASC
))
Затем я создаю простое вместо триггера:
create trigger [trMyTableInsert] on [MyTable] instead of insert
as
BEGIN
DECLARE @InsertedRows table( MyID int,
MyBit bit);
INSERT INTO [MyTable]
([MyBit])
OUTPUT inserted.MyID,
inserted.MyBit
INTO @InsertedRows
SELECT inserted.MyBit
FROM inserted;
-- LOGIC NOT SHOWN HERE THAT USES @InsertedRows
END;
Наконец, я пытаюсь выполнить вставку и получить вставленные значения:
DECLARE @tbl TABLE (myID INT)
insert into MyTable
(MyBit)
OUTPUT inserted.MyID
INTO @tbl
VALUES (1)
SELECT * from @tbl
Проблема - все, что я когда-либо возвращаю, нуль. Я вижу, что строка была правильно вставлена в таблицу. Я также знаю, что, если я удаляю ВЫВОД/В из триггера, эта проблема уходит.
Какие-либо мысли относительно того, что я делаю неправильно? Или то, как я хочу сделать вещи, не выполнимые?
Спасибо.