如何避免在我的SQL表中重复 - 我使用存储过程... [英] How do I avoid duplication in my SQL table - im using stored procedure...

查看:161
本文介绍了如何避免在我的SQL表中重复 - 我使用存储过程...的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

每次上传我的xml文件时,它都不会更新我以前的数据,而是重复它们。我如何检查现有项目并更换它们,如果有任何更改,而不是重复它们?谢谢



我的尝试:



Each time i upload my xml file it doesnt update my previous data, rather they duplicate. how do i check for existing items and replace them if any changes instead of having them in duplicates? Thanks

What I have tried:

USE [MyHelpDesk]
GO
/****** Object:  StoredProcedure [dbo].[InsertXML]    Script Date: 06/09/2017 14:38:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[InsertXML]
	@xml XML
		
AS
BEGIN
	
	 SET NOCOUNT ON
                    
      INSERT INTO HelpDesk
      SELECT
      
      DocID.value('(Module/text())[1]','VARCHAR(max)') AS Module, --TAG
      DocID.value('(SubModule/text())[1]','VARCHAR(max)') AS SubModule, --TAG
      DocID.value('(Title/text())[1]','VARCHAR(max)') AS Title, --TAG
      DocID.value('(SubTitle/text())[1]','VARCHAR(max)') AS SubTitle, --TAG
 FROM
      
      @xml.nodes ('/BackOffice/DocID')AS TEMPTABLE(DocID)
      
	
END

推荐答案

正如评论中所提到的,它非常简单。您可以使用IF EXISTS语句。例如:

As mentioned in the comments, it is pretty simple. You can use the IF EXISTS statement. For example:
IF EXISTS(SELECT * FROM someTable WHERE someValue = @value)
   BEGIN
     -- it exists so do your UPDATE
   END
ELSE
   BEGIN
      -- it does not exist.  Do an insert here.
   END


这篇关于如何避免在我的SQL表中重复 - 我使用存储过程...的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆