如何避免在我的SQL表中重复 - 我使用存储过程... [英] How do I avoid duplication in my SQL table - im using stored procedure...
本文介绍了如何避免在我的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屋!
查看全文