0

我有 3 个表,Merchant_Master、Merchant_PaymentDetail 和 Merchant_refference 主表看起来像这样,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 |
  +----+-----+--------------+---------------+
  |    |     |              |               |
  +----+-----+--------------+---------------+

现在我想使用插入语句将记录插入到所有三个表中,但是如何从商家主表到其他两个表中获得相同的中间值(中间不是自动增量),我是否必须使用 @@IDENTITY 来实现这一点或者有没有其他方法。

4

2 回答 2

1

使用您在评论中发布的其他信息,您的存储过程应如下所示:

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(第一)列都将获得它们的自动增量值。

于 2018-09-23T12:47:36.843 回答
0
INSERT INTO Merchant_Master (mid, acquirerID, merchantName)
VALUES...

DECLARE @mid INT = (SELECT mid FROM Merchant_Master WHERE id = SCOPE_IDENTITY())

...然后将@mid您的语句中的变量INSERT用于其他表

于 2019-09-04T18:13:50.703 回答