如果行存在,则行更新。如果行不存在则插入它

时间:2014-12-22 11:40:46

标签: sql-server

我正在开发SQL SERVER 2012 Express和开发人员解决方案。

我将在存储过程中收到一个xml。在存储过程中,我将解析xml并将其数据插入表中。

我的问题是,在这个xml中可能包含表中存在的数据,我需要用新的数据更新表上的数据。

我不想检查表中是否存在xml中的每一行。

我想我可以使用IGNORE_DUP_KEY,但我不确定。

如何更新或插入新数据而不进行检查?

这是我要插入(或更新)新数据的表格:

CREATE TABLE [dbo].[CODES]
(
    [ID_CODE] [bigint] IDENTITY(1,1) NOT NULL,
    [CODE_LEVEL] [tinyint] NOT NULL,
    [CODE] [nvarchar](20) NOT NULL,
    [COMMISIONING_FLAG] [tinyint] NOT NULL,
    [IS_TRANSMITTED] [bit] NOT NULL,
    [TIMESPAN] [datetime] NULL,
    [USERNAME] [nvarchar](50) NULL,
    [SOURCE] [nvarchar](50) NULL,
    [REASON] [nvarchar](200) NULL
     CONSTRAINT [PK_CODES] PRIMARY KEY CLUSTERED 
    (
        [CODE_LEVEL] ASC,
        [CODE] ASC
    )
)

1 个答案:

答案 0 :(得分:1)

" IGNORE_DUP_KEY"参数,如果已存在则忽略插入新行,但如果存在则不处理更新。

您的请求的解决方案是通过MERGE或DML操作(INSERT / UPDATE / DELETE)。

顺便说一句, 参数" IGNORE_DUP_KEY"仅覆盖索引键的存在性(索引列)。