插入带有标识列

时间:2017-04-14 14:33:01

标签: sql sql-server stored-procedures

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设置为null。

有没有办法,如果Remittance表中没有插入记录,@RemittanceID值应该设置为NULL。

2 个答案:

答案 0 :(得分:0)

您可以在此处使用module: { rules: [ { test: /\.jsx?$/, exclude: /node_modules/, loaders: ['react-hot-loader', 'babel-loader'] }, { test: /\.scss$/, loaders: ['style-loader', 'css-loader', 'postcss-loader'] }, { test: /\.(png|jpg|jpeg|gif|svg|woff|woff2)$/, loader: 'url-loader?limit=10000', }, { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] } ] } 来确定是否在最后一个语句中发生了更新。

@@ROWCOUNT

答案 1 :(得分:0)

尝试以下两个功能:

  1. IDENT_CURRENT( '表名')

    • 返回为指定表或视图生成的最后一个标识值。生成的最后一个标识值可以用于任何会话和任何范围。
  2. SCOPE_IDENTITY()

    • 返回插入同一范围内的标识列的最后一个标识值。范围是一个模块:存储过程,触发器,函数或批处理。因此,如果两个语句在同一存储过程,函数或批处理中,则它们在同一范围内。 +
  3. 如果您的程序可以同时运行,请记住,如果您的程序可以同时运行,它可以从其他会话中获取标识值。

    可能你可以同时使用它们。