Ho una domanda riguardante le prestazioni di SQL Server.T-SQL Inserimento o aggiornamento
Supponiamo che io sono un tavolo persons
con le seguenti colonne: id
, name
, surname
.
Ora, voglio inserire una nuova riga in questa tabella. La regola è la seguente:
Se
id
non è presente nella tabella, quindi inserire la riga.Se
id
è presente, quindi aggiornare.
ho due soluzioni qui:
Prime:
update persons
set [email protected]_id, [email protected]_name, [email protected]_surname
where [email protected]_id
if @@ROWCOUNT = 0
insert into persons(id, name, surname)
values (@p_id, @p_name, @p_surname)
Second:
if exists (select id from persons where id = @p_id)
update persons
set [email protected]_id, [email protected]_name, [email protected]_surname
where [email protected]_id
else
insert into persons(id, name, surname)
values (@p_id, @p_name, @p_surname)
Che cosa è un approccio migliore? Sembra nella seconda scelta, per aggiornare una riga, deve essere perquisito due volte, mentre nella prima opzione, solo una volta. Ci sono altre soluzioni al problema? Sto usando MS SQL 2000.
non è sicuro, ma vorrei solo fare un if ((COUNT (*))> 0) quindi aggiornare per la seconda opzione –