Используя ВЫВОД/В во вместо триггера вставки делает недействительным 'вставленную' таблицу

У меня есть проблема с помощью таблицы с вместо триггера вставки.

Таблица, которую я создал, содержит столбец идентификационных данных. Я должен использовать вместо вставки, включают эту таблицу. Я также должен видеть значение недавно вставленных идентификационных данных из моего триггера, который требует использования ВЫВОДА/В в триггере. Проблема состоит затем в том, что клиенты, которые выполняют, ВСТАВЛЯЮТ, не видят вставленные значения.

Например, я составляю простую таблицу:

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

Проблема - все, что я когда-либо возвращаю, нуль. Я вижу, что строка была правильно вставлена в таблицу. Я также знаю, что, если я удаляю ВЫВОД/В из триггера, эта проблема уходит.

Какие-либо мысли относительно того, что я делаю неправильно? Или то, как я хочу сделать вещи, не выполнимые?

Спасибо.

6
задан Daniel Fischer 9 May 2012 в 12:08
поделиться