我发现自己执行一个SP,它使用csv文件加载TMP表,并根据文件中报告的记录执行插入或更新最终表中的记录并且下面发生在我身上:使用csv文件插入和更新表中的记录
当表格完全为空时,我插入记录,这是正确的,但是当加载的文件有一些记录和插入以及未插入新记录时,I我只更新已经插入的记录并且我不插入新记录。
然后,我分享我在做什么,以便他们帮助我,指出我做错了。
IF NOT EXISTS (SELECT A.placa,
A.id_rom
FROM tbl_certi_gnv AS A,
#importsuic AS B
WHERE A.placa = B.r_placa
AND A.id_rom = B.r_id_rom)
BEGIN
INSERT INTO tbl_certi_gnv
(placa,
id_rom,
nit_distribuidor,
nit_taller_conv,
nit_certificador,
fecha_certificacion_inicial,
fecha_ultima_revision,
fecha_proxima_revision,
boton_habilitado,
ciudad,
usuario_ingresa_datos,
fecha_procesamiento)
SELECT r_placa,
r_id_rom,
d_nit_distribuidor,
d_nit_taller_conv,
d_nit_certificador,
f_fecha_certificacion_inicial,
f_fecha_ultima_revision,
f_fecha_proxima_revision,
d_boton_habilitado,
r_ciudad,
d_usuario_ingresa_datos,
Getdate()
FROM #importsuic
END
ELSE
BEGIN
UPDATE tbl_certi_gnv
SET fecha_proxima_revision = B.f_fecha_proxima_revision,
fecha_procesamiento = Getdate()
FROM tbl_certi_gnv AS A,
#importsuic AS B
WHERE A.placa = B.r_placa
AND A.id_rom = B.r_id_rom
PRINT 'ENTRA A ACTUALIZAR'
END
这是MySQL或SQL服务器? – SqlZim
你只会更新的原因是因为exists子句是错误的(记录确实存在)。我的猜测是你想要插入。在SQL Server中,你可以使用['MERGE'](https://msdn.microsoft.com/en-us/library/bb510625.aspx)。 – ZLK