Asp.net 一次更新多个表-SQL Server/T-SQL

Asp.net 一次更新多个表-SQL Server/T-SQL,asp.net,sql,sql-server,winforms,tsql,Asp.net,Sql,Sql Server,Winforms,Tsql,我有两张桌子,顾客和顾客电话 Customer中的单个记录可以有多个CustomerPhone记录。如下图所示,电话和传真位于CustomerPhone表中,而其余字段位于Customer表中。如果用户想要编辑客户记录,显然我必须更新客户表中的记录以及来自CustomerPhone(电话和传真)的至少两条记录 我可以写两个update语句,一个updatecustomerphone,第二个updatecustomer表。有更好的解决方案吗?在这种情况下,风险在于一个更新成功,但另一个由于某种原

我有两张桌子,顾客和顾客电话

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


我可以写两个update语句,一个updatecustomerphone,第二个updatecustomer表。有更好的解决方案吗?

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

你可以用两种方法克服这个问题

  • 执行两个单独的更新,但是 将它们放在一笔交易中
  • 实施客户更新 同时更新 为您准备的桌子 隐式或显式事务
  • 在SQL中,无法在一条语句中更新多个表,但您当然可以在同一个命令中使用多条语句


    上面的第二个选项可能会给您带来问题,因为您可以为一个客户提供许多电话号码,这将是有限的,因此我建议运行单独的更新,但在事务中执行。

    这种情况下的风险是一个更新成功,但另一个由于某种原因失败(网络电缆被拔下、电源故障等),这将导致数据库中的数据不正确

    你可以用两种方法克服这个问题

  • 执行两个单独的更新,但是 将它们放在一笔交易中
  • 实施客户更新 同时更新 为您准备的桌子 隐式或显式事务
  • 在SQL中,无法在一条语句中更新多个表,但您当然可以在同一个命令中使用多条语句


    上面的第二个选项可能会给您带来问题,因为您可以为客户提供多个电话号码,这将是一个限制,因此我建议运行单独的更新,但在事务中进行更新。

    关于此选项的几种方法:

    • 在事务(对象)中编写两条update语句
    • 编写一个执行更新的存储过程并使用SQL
    • 两者

      • 关于这一点,有几种方法:

        • 在事务(对象)中编写两条update语句
        • 编写一个执行更新的存储过程并使用SQL
        • 两者