Требования: В хранящейся процедуре необходимо вставить фрагмент данных в таблицы A и B, где основное внешнее ключ между таблицами A и таблицей B, столбцы, связанные с таблицей B, являются первичными ключами таблицы A, нужно вставить значение первичного ключа таблицы A после завершения вставки, получить значение первичного ключа таблицы A, а затем вставить данные в таблицу B.
После вставки записи нужно сразу получить возвращаемое значение первичного ключа в его технический лист. Этот первичный ключ генерируется автоматически.
Сначала создаём временную таблицу для тестирования, код выглядит следующим образом:
@@IDENTITY
После завершения оператора INSERT, SELECT IN или массового копирования @@IDENTITY содержит последнее идентифицирующее значение, полученное этим оператором. Если этот оператор не затрагивает таблицы с идентифицированными столбцами, @@IDENTITY возвращает NULL. Если вставлять несколько строк, генерируются несколько значений идентификаторов, @@IDENTITY возвращается последнее значение идентификатора. Если этот оператор запускает один или несколько триггеров, выполняющих операцию вставки, производящую идентифицированное значение, вызов @@IDENTITY сразу после выполнения оператора вернёт последнее идентифицирующее значение, сгенерированное триггером. Если оператор INSERT или SELECT INTO не работает, массовая репликация не работает, либо если транзакция откатывается, значение @@IDENTITY не восстанавливается к прежним настройкам.
ВСТАВЛЕН ВЫХОД
Для INSERT можно использовать вставленную таблицу, чтобы запросить свойства новой строки
Тестовый код следующий:
Эффект следующий:
|