Sql 如何将上次插入的记录id用于多个表
我有3个表,商户主表、商户付款明细表和商户参考表 主表如下所示,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 | +----+------+-----------
+----+------+------------+----------------+
| 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语句中使用它们。那么问题是什么?你得到了什么错误,或者你希望它做什么,而它现在没有?