2010-05-21 55 views
0

我有两个表,客户和CustomerPhone。在客户更新一次为多个表 - SQL服务器/ T-SQL

单个记录可以有多个CustomerPhone记录。如您在下面的图片中看到的,电话和传真驻留在CustomerPhone表中,而其余字段驻留在Customer表中。如果用户想要编辑客户记录,显然我必须更新Customer表中的记录,并且至少要记录CustomerPhone(电话和传真)中的两条记录。

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

我可以写两个更新语句,一个更新customerPhone和第二次更新客户表。有更好的解决方案吗?

回答

4

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

您可以通过两种方式解决这个。

  1. 执行2次单独的更新,但 将它们括在单个事务
  2. 实施客户更新 存储过程会同时更新 表给你,在任何一个 隐性或显性事务。

SQL没有办法在单个语句中更新多个表,但是您当然可以在同一个命令中使用多个语句。

上面的第二个选项可能是你有问题,你可以有一个顾客众多的电话号码,这将是限制,所以我建议运行单独的更新,但这样做在一个事务。