Вставить последнюю строку

#sql #sql-server #sql-server-2008 #triggers

#sql #sql-сервер #sql-server-2008 #запускает

Вопрос:

У меня есть триггер, который вставляет запись в таблицу различий, но мне нужно получить ту запись, которая была вставлена внутри триггера, как мне это сделать? Нет поля идентификации, только account_nbr, которое генерируется отдельным триггером в таблице insert.

Я не знаю, существуют ли инструкции sql для извлечения строки, которая была только что вставлена.

База данных — это Sql Server 2008.

Комментарии:

1. Я предполагаю, что вы говорите о Inserted таблице — имейте в виду: эта псевдотаблица может содержать несколько строк в триггере! (не только одну)

Ответ №1:

Предложение OUTPUT вернет вам только что вставленные записи:http://msdn.microsoft.com/en-us/library/ms177564.aspx

Если вы имеете в виду строки, вставленные перед запуском триггера, они находятся в inserted псевдотаблице.

Комментарии:

1. @Mitch — правильно; это плохая практика, но триггер может выполнять SELECT / OUTPUT / etc

2. Столбцы, возвращаемые из выходных данных, отражают данные в том виде, в каком они были после завершения инструкции INSERT, UPDATE или DELETE, но до выполнения триггеров: msdn.microsoft.com/en-us/library/ms177564.aspx Не уверен, правильно ли я понимаю предполагаемое использование выходных данных? (уже поздно, и мозги путаются!)

3. @Mitch Я говорю внутри триггера, который также полностью отстой с точки зрения архитектуры. На самом деле я бы предпочел переработать дизайн, чтобы избежать этой необходимости и удалить триггер, но трудно посоветовать это без дополнительного контекста

4. есть идеи, есть ли у MySQL эквивалент ВЫВОДА? Я искал, но не смог ее найти

5. Боюсь, @ понятия не будет. Это новое для SQL server (2008?), Но я не использую mysql