Я делаю несколько проверок и проверок SQL Триггеры сервера, но мне не удалось получить пользовательский оператор выбора из триггера. Мне нужно получить его во временную таблицу или в некоторые переменные, как это сделать?
Структура таблицы:
create table Orders
(
ID int identity(1,1),
OrderNo nvarchar(50),
Product nvarchar(100),
Quantity int
)
Мой триггер:
create trigger [dbo].[OrderInsertTrigger]
on [dbo].[Orders]
instead of insert
as
begin
set nocount on;
-- Some Checks here for validation.. some codes..
select 1 as result, 'insert is successful' as message return
end
Вставить запрос к тесту;
insert into Orders (OrderNo, Product, Quantity)
select 123, 'ice cream', 100
Я пробовал использовать вспомогательные скобки (просто догадываясь, чтобы захватить выходные данные триггера), но не сработало;
Declare @temp table(bit result, msg nvarchar(200))
insert into @temp
from
(insert into Orders(OrderNo,Product,Quantity) select 123, ''ice cream'', 100')
as t
Я пытался что-то динамическое c SQL, но не сработало;
Declare @temp table(bit result, msg nvarchar(200))
insert into @temp Exec('insert into Orders(OrderNo,Product,Quantity) select 123, ''ice cream'', 100')
Как можно захватить этот пользовательский оператор выбора из триггера? или это возможно?
РЕДАКТИРОВАТЬ
Моя цель на самом деле, я хочу сделать некоторые проверки перед операциями CRUD, чтобы предотвратить SQL ошибки, такие как проверка обнуляемости поля, проверка внешнего ключа, проверка диапазона значений или выборочная проверка в соответствии с потребностями клиента. Я хочу отразить свой пользовательский ответ клиенту с SQL сервера (может быть, от триггера или ???)
Итак, мой вопрос, как эффективно проводить проверки, проверки для слишком большого числа SQL Серверные столы в стати c или динамически c способом?