Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在单个sql查询中在多个表中插入多行_C#_Sql Server_Sql Server 2008 - Fatal编程技术网

C# 在单个sql查询中在多个表中插入多行

C# 在单个sql查询中在多个表中插入多行,c#,sql-server,sql-server-2008,C#,Sql Server,Sql Server 2008,我想在一个表中添加一些行,然后从新添加的记录中选择一个特定的数据,然后将该数据插入另一个表中 cmd = new SqlCommand("INSERT INTO SalesDetails.sale(sale_date) VALUES (@sale_date); SELECT sale_id FROM SalesDetails.sale WHERE sale_date=@sale_date; SELECT

我想在一个表中添加一些行,然后从新添加的记录中选择一个特定的数据,然后将该数据插入另一个表中

cmd = new SqlCommand("INSERT INTO SalesDetails.sale(sale_date) VALUES (@sale_date); 
                      SELECT sale_id  FROM SalesDetails.sale WHERE sale_date=@sale_date; 
                      SELECT stock_id FROM StockDetails.stock_item WHERE item_id=@item_id;
                      INSERT INTO SalesDetails.payment(payment_method,sale_id) 
                      VALUES (@payment_method, sale_id); 
                      INSERT INTO SalesDetails.dispatch_out_item(stock_id,sale_id,qty) 
                      VALUES (stock_id,sale_id,@qty);", con);

我建议您为此编写一个存储过程,而不是将所有内容都写入一个SQL命令语句

使用存储过程的原因是,您可以更干净、更好地处理其中的多个表事务,同时还可以实现事务逻辑,通过事务逻辑可以确保发生更改的所有表的数据一致性。由于您在这里操作多个表,因此需要确保更改保留在所有表中,或者不保留在任何表中

选中此链接作为参考:


希望这有帮助。

不可能在一条SQL语句中实现您的请求。就像@Matt Murdock所说的,您应该创建一个存储过程,在一个事务中执行所有步骤。为了从当前insert语句中选择数据,您可以使用
output
关键字进行解释