我正在开发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
)
)
答案 0 :(得分:1)
" IGNORE_DUP_KEY"参数,如果已存在则忽略插入新行,但如果存在则不处理更新。
您的请求的解决方案是通过MERGE或DML操作(INSERT / UPDATE / DELETE)。
顺便说一句, 参数" IGNORE_DUP_KEY"仅覆盖索引键的存在性(索引列)。