如果存在更新else插入记录在SQL Server 2008表

问题描述:

我有一个临时表,并希望插入数据到Main表,所以我想要检查时插入数据从分段到主表,如果存在然后更新记录else插入作为新纪录。这里的问题是既是分期以及主表没有任何关键列根据我可以比较值。如果存在更新else插入记录在SQL Server 2008表

是否有可能不需要在两个表上具有主键即主键?如果是的话,请告诉我如何。

在此先感谢。

+1

您的意思是这些表上没有创建主键,或者没有“逻辑”主键来标识每一行? – Lamak

+1

我会建议在所有表格上为这种情况设置唯一的标识符。没有它们,你就无法安全,精确地进行检查。 – CSharpened

+1

如果您没有任何可用于比较的列,您将如何更新或插入? –

如果在一行中没有唯一键或数据集来定义唯一性,那么没有。

该组数据可以是每列中的数据的组合,创建将提供唯一性的部分的总和;但是,如果不暴露于您的数据,您需要做出该决定。

你写的WHERE子句,以包括让你的记录是唯一的(即是决定该记录是否是新的或应进行更新的字段。)

看看这篇文章的所有字段(http://blogs.msdn.com/b/miah/archive/2008/02/17/sql-if-exists-update-else-insert.aspx )提示如何构建它。

如果您使用SQL Server 2008r2,您也可以使用MERGE语句 - 我没有在没有密钥的表上试过它,所以我不知道它是否适用于您。