#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