Как я могу сохранить информацию в моей базе данных, когда информация должна быть сохранена в разных таблицах? - PullRequest
1 голос
/ 04 июня 2010

Я должен сохранить следующие переменные в базе данных:

        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 ]

4 голосов
/ 04 июня 2010

Две команды INSERT или UPDATE, по одной на таблицу, выполняемые как единая единица работы в контексте транзакции. Либо оба должны быть успешными, либо оба должны потерпеть неудачу и выполнить откат.

Это может помочь вам узнать о транзакциях.

1 голос
/ 04 июня 2010

Как сказал @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, чтобы откатить все, что уже было сделано. Но обычно он просто выполняет два ВСТАВКИ, фиксирует работу и продолжает свой путь.

...