当信息保存在不同的表中时,如何将信息保存到我的数据库?

时间:2010-06-04 00:40:20

标签: c# sql database transactions

我必须将以下变量保存到数据库中:

        string PoliciaID = Session["username"];
        string PlacaAuto = Page.Request.QueryString["placaauto"];
        string Carnet = Page.Request.QueryString["carnet"];
        string Fecha = DateTime.Now;
        string TipoInfraccion = Page.Request.QueryString["tipo"];

PoliciaID是另一个名为 Policia 的表的主键,而Carnet是名为 Persona 的表的主键。

如何使用C#在这种情况下保存信息?

感谢您的时间!

2 个答案:

答案 0 :(得分:4)

两个INSERT或UPDATE命令,每个表一个,作为事务上下文中的单个工作单元执行。两者都应该成功,或者两者都应该失败并回滚。

This可能会帮助您了解交易。

答案 1 :(得分:1)

正如@duffymo所说

DECLARE @FirstTab TABLE (Col1 INT, Col2 INT)
DECLARE @SecondTab TABLE (Col3 INT, Col4 INT)

BEGIN TRANSACTION
BEGIN TRY
    INSERT INTO @FirstTab ( Col1, Col2 ) VALUES ( 1,2 )
    INSERT INTO @SecondTab ( Col3, Col4 ) VALUES ( 3,4 )
    COMMIT TRANSACTION 
END TRY 
BEGIN CATCH 
    ROLLBACK TRANSACTION
END CATCH 

(您可能还想添加一些机制来与调用者进行通信,无论是成功(并提交更改)还是失败(回滚))

所以这里的想法是两个插入两个都会发生,或者两者都不发生。如果在此过程中抛出异常,它将跳转到catch块以回滚已经完成的任何事情。但通常它只会做两个INSERTS,提交工作,并继续前进。