Я пытаюсь получить таблицу OUTPUT с помощью команды INSERT в базе данных SQL Server (v14).
DECLARE @i TABLE (TICKET_ID int, CREATED_DATE datetime);
INSERT INTO dbo.TICKET (SITE_ID, TICKET_TITLE, USER_ID)
OUTPUT INSERTED.TICKET_ID, INSERTED.CREATED_DATE INTO @i
VALUES (@s, @t, @q);
SELECT * FROM @i;
У меня есть 3 параметра, которые заполняются для сайта, заголовка билета и пользователя с помощью @s, @t и @u соответственно.
Я вызываю команду, используя объект SqlClient.SqlDataReader с функцией ExecuteReader на платформе 4.5.
Команда успешно вставляет запись в таблицу базы данных, но не возвращает таблицу @i с идентификатором билета (автоинкремент) и датой создания (по умолчанию = GETDATE), которую я должен представить пользователю после сохранения в база данных.
Я поигрался с удалением @i TABLE в команде, но получаю ошибку .NET:
Целевая таблица 'name' оператора DML не может иметь никаких включенных триггеров, если оператор содержит предложение OUTPUT без предложения INTO.
Я нашел несколько ссылок, по которым можно их исправить, но это не решило мою проблему.
Невозможно использовать UPDATE с предложением OUTPUT когда на столе есть триггер
Могу ли я оказать какую-либо помощь в том, чего я пытаюсь достичь?
SSMS
? Это работает ? Если работает, проверьте свой.NET
код. - person Squirrel   schedule 08.01.2020