【问题标题】:Update Multiple Tables at a Time - SQL Server/T-SQL一次更新多个表 - SQL Server/T-SQL
【发布时间】:2011-02-22 07:02:56
【问题描述】:

我有两张表,Customer 和 CustomerPhone。

Customer 中的单个记录可以有多个 CustomerPhone 记录。如下图所示,电话和传真位于 CustomerPhone 表中,而其余字段位于 Customer 表中。如果用户想要编辑客户记录,显然我必须更新客户表中的记录以及来自 CustomerPhone 的至少两条记录(电话和传真)。

http://img714.imageshack.us/img714/9417/snapshotapp.jpg http://img714.imageshack.us/img714/9417/snapshotapp.jpg

我可以编写两个更新语句,一个更新 customerPhone,第二个更新 Customer 表。有没有更好的解决方案?

【问题讨论】:

    标签: asp.net sql sql-server winforms tsql


    【解决方案1】:

    在这种情况下的风险是一个更新成功但另一个由于某种原因失败(网线被拔下、电源故障等),这会使您在数据库中的数据不正确。

    您可以通过两种方式克服这个问题。

    1. 进行 2 次单独的更新,但是 将它们包含在一个事务中
    2. 实施客户更新 更新两者的存储过程 为您准备的表格,在任一 隐式或显式事务。

    SQL 中无法在一条语句中更新多个表,但您当然可以在同一命令中包含多个语句。

    上面的第二个选项对您来说可能会有问题,因为您可以为客户提供多个电话号码,并且会受到限制,因此我建议运行单独的更新,但在事务中进行。

    【讨论】:

      【解决方案2】:

      关于这个的几种方法:

      【讨论】:

        猜你喜欢
        • 2019-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-20
        • 1970-01-01
        • 2016-06-04
        相关资源
        最近更新 更多