SQL Merge不会添加到表

时间:2014-04-08 08:44:55

标签: sql sql-server

我试图合并一个临时表,用c#应用程序中的数据填充我的SQL数据库中的表。

阅读了一些文章后,似乎SQL Merge应该是最合适的选项,当我更新或删除数据库中的条目组时,它会很有用。

我的问题是,我无法添加新的数据行,而外键与数据库表中的内容不匹配,而只是删除了数据库中的行和替换临时表中的新的。

我在表FirstDBTableID和SecondDBTableID中引用了两个外键。

到目前为止,这是我的SQL:

ALTER PROCEDURE [dbo].[SP_UpdateTable]
@TempTable as TempTableType READONLY
AS
BEGIN    
MERGE dbo.Table AS target
USING @TempTable AS source ON target.FirstDBTableID = source.FirstDBTableID
AND target.SecondDBTableID = source.SecondDBTableID
WHEN MATCHED THEN
    UPDATE SET target.Provider = source.Provider, target.Value = source.Value,    target.Quantity = source.Quantity
-- value doesn't exist in the target table, so add it
WHEN NOT MATCHED BY TARGET THEN 
    INSERT (FirstDBTableID, SecondDBTableID, Provider, Value, Quantity)
    VALUES (source.FirstDBTableID, source.SecondDBTableID, source.Provider, source.Value, source.Quantity)
-- value doesn't exist in the source table, so delete from target
WHEN NOT MATCHED BY SOURCE THEN 
    DELETE;

END

错过了声明?也许SQL Merge不会在这里工作?如果我没有说清楚,请问我问题。

提前致谢。

0 个答案:

没有答案