2011-11-01 54 views
0

我有一个asp.net web应用程序,用户可以在其中更新数据库中的表。我想知道这样做的正确方法。正如你在下面的图片中看到的,红色阴影区域是我有共同点的数据,我做了不是需要更新。有关更新表的sql server理论

enter image description here

这里是我需要采取的步骤:

  1. 如果存在
  2. 删除数据,是不是在用户更新
  3. 添加数据不更新数据来自用户更新,表中尚未列出

我需要审核此t也能,所以我会有一个触发器。我想从理论上知道对表格进行这种更新的最佳方式是什么?

非常感谢Aaron介绍了merge的概念。

下面是表数据的样子:

foreignkey model primarykey 
1   AA  1 
1   AA1  2 
1   AA3  3 
23   B  4 
22   C  5 

用户将增加,看起来像这样的数据:

foreignkey model primarykey 
1   A1  1 
1   AA1  2 
1   AA3  3 
22   C  5 

正如你可以看到,第一行进行了更新,并倒数第二行被完全删除。你能帮我用这个合并声明吗?

+0

还有其他人想要刺吗? –

回答

3

是的,这是可能的,它被称为合并。请参阅SQL Server的文档MERGE Statement

如果您不想执行任何更新(如果数据已经存在),那么就不要添加WHEN MATCHED子句。使用WHEN NOT MATCHED BY SOURCEWHEN NOT MATCHED BY TARGET插入/删除缺失/删除​​的行。

+0

非常感谢我更新了这个问题 –