【发布时间】:2011-10-01 11:21:51
【问题描述】:
我基本上是在尝试从 MYSQL 中执行 INSERT 和 ON DUPLICATE 等操作。
但是,我的“合并”语法出现错误。这个存储过程接受一个变量“@ID”,它是一个 guid,并在表中查看它是否已经存在——如果存在,则插入一个新条目,否则更新现有条目。我无法弄清楚这里有什么问题!
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE usp_DigitalTool_InsertUpdate2
(@ID uniqueidentifier, @TOOL_ID uniqueidentifier, @INPUT_ID uniqueidentifier)
AS
MERGE
INTO DigitalTool as target
USING (SElECT @ID,@TOOL_ID,@INPUT_ID) as source(id, tool_id, input_id)
ON (target.ID = source.id)
when matched then
update
set TOOL_ID = source.tool_id,
INPUT_ID = source.input_id
when not matched then
insert ( ID, TOOL_ID, INPUT_ID)
values ( NEWID(), source.tool_id, source.input_id)
END
GO
感谢您的帮助。谢谢!
【问题讨论】:
-
什么是
@TOOL_ID和@INPUT_ID?为什么它在一种情况下用作文本值,而在另一种情况下显然用作参数? -
@TOOL_ID 和 @INPUT_ID 作为参数传入,如果 ID 对表来说是唯一的,则更新字段。
标签: c# asp.net sql-server-2008 stored-procedures merge