首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net多表update语句

asp.net多表update语句
EN

Stack Overflow用户
提问于 2012-04-24 01:57:52
回答 3查看 1.9K关注 0票数 0

我需要将此查询转换为update语句。我将不得不更新字段中的值。除了update语句之外,一切都已经就绪。

以下是查询的select版本:

代码语言:javascript
复制
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

可以从同一个查询中更新两个不同的表吗?

以下是我到目前为止拥有的代码:

代码语言:javascript
复制
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();
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-24 02:04:03

您不能在一条语句中更新多个表,但您可以使用事务来确保更新是相互依赖的:

代码语言:javascript
复制
BEGIN TRANSACTION

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

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

COMMIT 
票数 3
EN

Stack Overflow用户

发布于 2012-04-24 02:11:33

我认为,您不能直接在两个表上进行更新。但是您可以对查询执行Optimize操作。

多么?

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

代码语言:javascript
复制
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‘表中的数据是经过筛选的数据,可以重复使用。

代码语言:javascript
复制
select * from @GuestTable

drop table #table1
票数 0
EN

Stack Overflow用户

发布于 2012-04-24 02:17:53

或者,您可以创建具有两个数据表的dataset,并让tableadaptermanager管理更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10285726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档