INSERT INTO [dbo].[Transactions] ([PartnerId], [TransactionId], [ver], [InsertedBy], [InsertedDateTime], [SavedBy], [SavedDateTime])
SELECT
[PartnerId], [TransactionId], [ver], [InsertedBy],
[InsertedDateTime], [SavedBy], [SavedDateTime]
FROM
@parTransaction;
SET @TransactionID = @@IDENTITY;
INSERT INTO [dbo].[Remittances] ([TransactionID], [RemittanceTransactionId],[InsertedBy], [InsertedDateTime], [SavedBy], [SavedDateTime])
SELECT
@TransactionID, [RemittanceTransactionId], [InsertedBy],
[InsertedDateTime], [SavedBy], [SavedDateTime]
FROM
@parRemittance;
SET @RemittanceID = @@IDENTITY ;
我的问题在这里当没有记录插入到表Remittance
,@RemittanceID
是越来越Transactions
表的标识值。插入到多个表与标识列
所以我们说插入事务表标识值是1,没有记录在Remittance
表,然后@TransactionID
和@RemittanceID
都被设置为1,但我想@TransactionID
值设置为1,@RemittanceID
为空。
有没有什么办法,这样,如果没有插入Remittance
表记录,@RemittanceID
值应设置为NULL。
您应该考虑使用OUTPUT。 https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql如果你要坚持两个单独的语句,你应该使用SCOPE_IDENTITY来代替。 https://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/ –
我也建议使用* * SCOPE_IDENTITY()'**而不是其他任何东西来获取新插入的标识值。 [请参阅此博客文章,了解有关WHY的解释](http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity -of-record /) –