0
我正在开发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
)
)
我怀疑你想使用['MERGE'(http://msdn.microsoft.com/en-GB/library/bb510625.aspx),虽然这并不符合“不检查它”的标准,但它确实都在一个声明中运行。您可以使用'IGNORE_DUP_KEY',但您的架构需要更多信息来说明如何使用它。 [本文](http://sqlblog.com/blogs/paul_white/archive/2013/02/01/a-creative-use-of-ignore-dup-key.aspx)是一个很好的开始' IGNORE_DUP_KEY'。 – GarethD
@GarethD我已经添加了表格。 – VansFannel
所以阅读本[链接](http://sqlblog.com/blogs/paul_white/archive/2013/02/01/a-creative-use-of-ignore-dup-key.aspx [/链接] 后一切是清楚的。你可以决定现在做什么? – KumarHarsh