INSERT nebo UPDATE?

Ludek Rasek ludek.rasek na centrum.cz
Pondělí Únor 4 11:55:06 CET 2002


On Mon, Feb 04, 2002 at 11:22:57AM +0100, "Zíka Aleš, Ing." wrote:
> 	Dobry den,
> 
> 	mam takovy "teoreticky" dotaz. Mam tabulku, zjednodusene lze
> rict,
> ze obsahuje dva sloupce - KLIC a HODNOTA, kde KLIC je primarnim klicem.
> Aplikace neustale ziskava nove dvojice (KLIC, HODNOTA), ktere ma do
> tabulky
> ukladat nasledujicim zpusobem - pokud jeste dany KLIC v tabulce
> neexistuje,
> vlozi se dalsi radek, pokud existuje, upravi se jeho HODNOTA na novou.
> 	A ted mi jde o to, jak to nejlepe udelat?	Zatim me napadly
> tri
> moznosti:
> 1) Napred zkusit INSERT, pokud selze kvuli duplicite primarniho klice,
> pouzit UPDATE
> 2) Napred zkusit UPDATE, pokud neopravi zadny radek, pouzit INSERT
> 3) SELECTem otestovat existenci KLICe a podle toho pouzit INSERT nebo
> UPDATE
> (asi uplny zverstvo, holt me zkazila dBase))
> 
> 	Existuje nejaky "standardni doporuceny postup" jak takovouhle
> vec
> resit? A pokud ne, tak ktery z vyse popsanych zpusobu je nejrychlejsi a
> "nejelegantnejsi"?
>
Reseni je mozne vsemi z uvedenych zpusobu, ale zrejme by bylo velice
dobre, aby to vzdy bezelo ve spravne ohranicene transakci.
Volba reseni zavisi na druhu aplikace. Pokud vetsina pozadavku smeruje
na jiz existujici zaznamy, pak bych volil reseni 2, protoze ve vestine
pripadu projde a vse je vyreseno jednim DML prikazem. Pokud prevazuje
vkladani novych zaznamu, pak 1. Pokud by se vam mohly hodit dalsi udaj o
prave procesovanem radku jeste k jinym vecem, nez pouze ke zmene
HODNOTA, pak reseni 3.

S pozdravem

Ludek Rasek


Další informace o konferenci Test