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 /) –