我正在使用存储过程来插入数据。 我有2个表用于存储客户详细信息,另一个用于存储付款历史记录。因此,当我按下表单上的插入详细信息按钮时,将调用此存储过程。我必须同时在两个表中插入数据。
[dbo]。[CustomerDetails] 主键 CustomerId ,设置为自动增量。
因此,在插入时,我希望 [dbo]中的 CustomerId 设置为 RecordId 。[PaymentHistory]
注意:所有其他信息可以相同,但每个帐户由CustomerDetails中的主键CustomerId区分
AutoCompleteTextView
答案 0 :(得分:2)
对于MSSQL,有SCOPE_IDENTITY(),它在存储过程中使用起来非常安全,即使我自己从未使用过它,所以我无法评论它可能存在的任何奇怪之处。
https://docs.microsoft.com/en-us/sql/t-sql/functions/scope-identity-transact-sql
答案 1 :(得分:1)
大家好我用SCOPE_IDENTITY解决了我的问题。对于大多数应用程序,我们需要返回最近的ID,我们可以使用@@ IDENTITY,SCOPE_IDENTITY(),IDENT_CURRENT()。那些不知道它们是什么的人可以通过这个链接来理解这些
https://www.codeproject.com/Articles/103610/Difference-between-IDENTITY-SCOPE-IDENTITY-IDENT-C
代码如下:
DECLARE @id int;
INSERT INTO [dbo].[CustomerDetails] ([CustomerName], [FatherName], [Cnic], [ContactNo], [Address], [City], [StartDate], [EndDate],[SamanDesc], [Tola], [Masha], [Rati], [Location], [Amount], [Percentage], [Months], [Days], [Status])
VALUES (@CustomerName, @FatherName, @Cnic, @ContactNo, @Address, @City, @StartDate, @EndDate, @SamanDesc, @Tola, @Masha, @Rati, @Location, @Amount, @Percentage, @Months, @Days, @Status);
SET @id = (SELECT SCOPE_IDENTITY());
INSERT INTO [dbo].[PaymentHistory] ([RecordId], [DatePaid], [Amount], [AmountPaid], [Profit])
VALUES (@id, @StartDate, @Amount, 0, 0);
答案 2 :(得分:0)
如果您的数据库是MySQL,请使用
select last_insert_id() from dual
;
这将检索此信息。