簡體   English   中英

asp.net多表更新語句

[英]asp.net multiple table update statement

我需要將此查詢轉換為更新語句。 我將不得不更新字段中的值。 除更新語句外,所有內容均已就緒。

這是查詢的選擇版本:

SELECT i.GoLiveDate, i.FirstBonusRun, i.TechFName, i.TechLName, i.TechEmail, i.TechPhone, i.WebISPFName, i.WebISPLName, 
              i.WebISPEmail, i.WebISPPhone, i.FullFillFName, i.FullFillLName, i.FullFillEmail, i.FullFillPhone, d.FName,
              d.LName, d.HomePhone, d.Email
              FROM NC_Information i
              INNER JOIN Distributor d
                ON d.DistID = i.ClientID
              WHERE clientID = @value

是否可以從同一查詢中更新兩個不同的表?

這是我到目前為止的代碼:

public void Update (int ClientID)
{
    using ( var conn = new SqlConnection( GeneralFunctions.GetConnectionString() ) )
    using ( var cmd = conn.CreateCommand() )
    {
        conn.Open();
        cmd.CommandText =
        @"SELECT i.GoLiveDate, i.FirstBonusRun, i.TechFName, i.TechLName, i.TechEmail, i.TechPhone, i.WebISPFName, i.WebISPLName, 
          i.WebISPEmail, i.WebISPPhone, i.FullFillFName, i.FullFillLName, i.FullFillEmail, i.FullFillPhone, d.FName,
          d.LName, d.HomePhone, d.Email
          FROM NC_Information i
          INNER JOIN Distributor d
            ON d.DistID = i.ClientID
          WHERE clientID = @value";
        cmd.Parameters.AddWithValue( "@value", ClientID );
        cmd.ExecuteNonQuery();
    }
}

您不能在一個語句中更新多個表,但是可以使用一個事務來確保更新彼此依賴。

BEGIN TRANSACTION

UPDATE SomeTable
SET SomeColumn  = 'Foo' 
WHERE SomeID = 123   

UPDATE AnotherTable
SET AnotherColumn = 'Bar'
WHERE AnotherID = 456    

COMMIT 

我認為,您不能直接在兩個表上進行更新。 但是您可以Optimize查詢。

怎么樣?

插入/更新/刪除語句中的OUTPUT關鍵字

可以使用下面提到的示例重用第一個Update Statement's Select Data(filtered data)

CREATE TABLE #table1
(
    id INT,
    employee VARCHAR(32)
)
go

INSERT INTO #table1 VALUES 
      (1, 'name1')
     ,(2, 'name2')
     ,(3, 'name3')
     ,(4, 'name4');
GO

DECLARE @GuestTable TABLE
(
    id INT,
    employee VARCHAR(32)
);

update #table1
Set id = 33
OUTPUT inserted.* INTO @GuestTable
Where id = 3

“ @GuestTable”表中的數據是經過過濾的數據,可以重復使用。

select * from @GuestTable

drop table #table1

或者,您可以創建具有兩個數據表的數據集,然后讓tableadaptermanager管理更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM