как использовать последний вставленный идентификатор записи для нескольких таблиц - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть 3 таблицы, Merchant_Master, Merchant_PaymentDetail и Merchant_refference Master таблица выглядит следующим образом, и Id - это автоинкремент

  +----+------+------------+----------------+
  | id | mid  | acquirerID |   merchantName |
  +----+------+------------+----------------+
  |  1 | 2345 |          3 |  store 1       |
  +----+------+------------+----------------+

Merchant_PaymentDetail выглядит так, первый столбец - AutoIncrement

   +----+-----+--------+-------------+
   | id | mid | BankID |   AccountNo |
   +----+-----+--------+-------------+
   |    |     |        |             |
   +----+-----+--------+-------------+

и таблица Merchant_Refference выглядит следующим образом: первый столбец - AutoIncrement

  +----+-----+--------+---------------------+
  | id | mid | Reference 1  |   Reference 2 |
  +----+-----+--------------+---------------+
  |    |     |              |               |
  +----+-----+--------------+---------------+

. Теперь я хочу вставить записи во все три таблицы с помощью оператора вставки, но как получить ту же середину из основной таблицы продавцак двум другим таблицам (середина не AutoIncremented), должен ли я использовать @@ IDENTITY для достижения этой цели или есть какой-либо другой способ.

1 Ответ

0 голосов
/ 23 сентября 2018

С дополнительной информацией, которую вы разместили в комментариях, ваша хранимая процедура должна выглядеть примерно так:

CREATE PROCEDURE dbo.StoredProcName
  @mid int,
  @acquirerID int,
  ...
AS
BEGIN
  SET NOCOUNT ON;
  SET XACT_ABORT ON;

  BEGIN TRANSACTION;

  INSERT INTO Merchant_Master (mid, acquirerID, merchantName)
    VALUES (@mid, @acquirerID, '...');

  INSERT INTO Merchant_PaymentDetail (mid, BankID, AccountNo)
    VALUES (@mid, ..., ...);

  INSERT INTO Merchant_Refference (mid, [Reference 1], [Reference 2])
    VALUES (@mid, ..., ...);

  COMMIT TRANSACTION;

END;

Таким образом, вы вставляете одинаковые mid во все три таблицы транзакции и всеиз ваших IDENTITY (первых) столбцов будет получено автоинкрементное значение.

...