Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何将上次插入的记录id用于多个表_Sql_Asp.net_Sql Server_Sql Server 2008_Sql Server 2012 - Fatal编程技术网

Sql 如何将上次插入的记录id用于多个表

Sql 如何将上次插入的记录id用于多个表,sql,asp.net,sql-server,sql-server-2008,sql-server-2012,Sql,Asp.net,Sql Server,Sql Server 2008,Sql Server 2012,我有3个表,商户主表、商户付款明细表和商户参考表 主表如下所示,Id为自动增量 +----+------+------------+----------------+ | id | mid | acquirerID | merchantName | +----+------+------------+----------------+ | 1 | 2345 | 3 | store 1 | +----+------+-----------

我有3个表,商户主表、商户付款明细表和商户参考表 主表如下所示,Id为自动增量

  +----+------+------------+----------------+
  | id | mid  | acquirerID |   merchantName |
  +----+------+------------+----------------+
  |  1 | 2345 |          3 |  store 1       |
  +----+------+------------+----------------+
Merchant_PaymentDetail如下所示,第一列是AutoIncrement

   +----+-----+--------+-------------+
   | id | mid | BankID |   AccountNo |
   +----+-----+--------+-------------+
   |    |     |        |             |
   +----+-----+--------+-------------+
  +----+-----+--------+---------------------+
  | id | mid | Reference 1  |   Reference 2 |
  +----+-----+--------------+---------------+
  |    |     |              |               |
  +----+-----+--------------+---------------+
Merchant_reference表如下所示,第一列是AutoIncrement

   +----+-----+--------+-------------+
   | id | mid | BankID |   AccountNo |
   +----+-----+--------+-------------+
   |    |     |        |             |
   +----+-----+--------+-------------+
  +----+-----+--------+---------------------+
  | id | mid | Reference 1  |   Reference 2 |
  +----+-----+--------------+---------------+
  |    |     |              |               |
  +----+-----+--------------+---------------+
现在我想使用insert语句将记录插入到所有三个表中,但是如何将相同的mid从merchant master表插入到其他两个表中呢
mid不是自动递增的,我是否必须使用@@IDENTITY来实现这一点,或者是否有其他方法。

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

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 first列都将获得其自动递增的值

INSERT INTO Merchant_Master (mid, acquirerID, merchantName)
VALUES...

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

…然后在其他表的INSERT语句中使用@mid变量

您可以使用诸如AutoIncrement和last INSERT id之类的术语。这些术语通常与MySQL关联。您确定正在使用SQL Server吗?如果是这样的话,只有一个版本是合适的。是的,我使用的是SQL Server。你能帮我们清理一下吗。。。因此,您想在所有三个表中插入相同的mid,该mid不是任何一个表中未自动递增的标识列?为什么不在这三个表中都插入相同的值,是什么阻止了你呢?我有一个表单,我必须从用户那里获取输入,并将记录插入三个表中,我使用存储过程插入记录。你使用表单进行用户输入,剩下的则使用存储过程。然后使用变量,它将保存用户输入数据,您可以在insert语句中使用它们。那么问题是什么?你得到了什么错误,或者你希望它做什么,而它现在没有?