我發現自己執行一個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