我想要表中的某些行,然后从新添加的记录中选择一个特定的数据,然后将该数据插入另一个表中。以下语句显然不起作用,但它应该让我知道我想要的是什么在这里完成。
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);
答案 0 :(得分:2)
我建议你为此编写一个存储过程,而不是将eveything写入一个单独的SQL Command语句。
使用存储过程的原因是,您可以更干净,更好地处理其中的多个表事务,同时还可以实现事务逻辑,通过该逻辑可以确保将发生更改的所有表的数据一致性。由于您在此处操作多个表,因此需要确保更改保留在所有表中或不保留在任何表中。
点击此链接作为参考:Using Stored Procedures with Transactions
希望这有帮助。