在一个sql查询的多个表中插入多行

本文关键字:插入 sql 一个 查询 | 更新日期: 2023-09-27 18:25:31

我想在一个表中找到一些行,然后从新添加的记录中选择一个特定的数据,然后将该数据插入另一个表。下面的陈述显然不起作用,但它应该让我知道我在这里要做什么。

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命令语句。

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

检查此链接作为参考:使用事务的存储过程

希望这能有所帮助。