Alex2 101 Ответов: 1

Как избежать дублирования записей при массовой вставке в таблицу с помощью openxml в SQL?


Я хочу избежать дублирования записей при массовой вставке в таблицу в SQL. Я передаю XML в качестве входного параметра и вставляю его с помощью OpenXml

Что я уже пробовал:

EXEC sp_xml_preparedocument @docHandle OUTPUT, @ip_XML                 
BEGIN TRY               
BEGIN TRAN                     
SET @op_error_code = 0;              

IF(@ip_Status ='I')            
BEGIN            

	INSERT INTO ACH_OUTWARD_Files                
	(   
	            
	FileName                 
	, FileType                 
	, Status                 
	, CreatedDate              
	   
	)           
	 
	SELECT indx.FileName                 
	, '102_OUTWARD_ACH'                 
	,  indx.Mode              
	, GETDATE()                 
 
	FROM OPENXML(@docHandle, '/WPS/MDL_ACH_Outward_Details',2)WITH                                  
	(   
	FileName varchar(100)  
	,FileType varchar(50)                 
	, Mode  varchar(1)    
	, CreatedDate DateTime             
	) 

EXEC sp_xml_removedocument @docHandle   

END

Bryian Tan

Не уверен, насколько велика таблица и производительность, но вы можете попробовать добавить предложение where: WHERE indx. FileName NOT IN (SELECT FileName FROM ACH_OUTWARD_Files )

1 Ответов

Рейтинг:
0

Chris Quinn

Чтобы предотвратить вставку дубликатов записей, существующих в XML-файле, измените ВЫБИРАТЬ к ВЫБРАТЬ РАЗЛИЧНЫЕ