phpbar.de logo

Mailinglisten-Archive

Verwendung von replace

Verwendung von replace

Ralf Geschke ralf at kuerbis.org
Die Jul 15 16:43:48 CEST 2003


Hallo !

Ok, die Syntax REPLACE tabelle SET... existiert. 
Da habe ich mich zugegebenermassen geirrt - vielleicht auch daher, weil
diese Schreibweise dermassen Banane ist, dass ich sie in meinen
ca. sechs Jahren MySQL niemals verwendet habe. ;-)

Der Witz an REPLACE ist doch gerade, dass diese Anweisung
wie ein INSERT verwendet werden kann. Deshalb empfinde ich die
Moeglichkeit, dies wie beim UPDATE zu schreiben, als
ziemlich suboptimal und unnoetig. 

Dein Beispiel zeigt es ja:

> CREATE TABLE `t1` (
>   `id` int(11) NOT NULL auto_increment,
>   `data1` int(11) NOT NULL default '0',
>   `data2` varchar(10) NOT NULL default '',
>   PRIMARY KEY  (`id`)
> ) TYPE=MyISAM AUTO_INCREMENT=3 ;
> 
> INSERT INTO `t1` VALUES (1, 1, 'eins');
> INSERT INTO `t1` VALUES (2, 2, 'zwei');
> 
> auf diese tabbele nun folgendes sql:
> 
> REPLACE INTO `t1`
> SET id = 1,
> data1 = 3,
> data2 = 'drei'
> 
> ist erfolgreich, also ES FUNKTIONIERT!!

Richtig, aber dennoch doof. 

Denn id=1 wird ja nicht updated, daher wirkt das SET id=1 in meinen
Augen etwas krumm. Insofern passt dazu doch eher
UPDATE t1 SET data1=3, data2='drei' WHERE id=1;

Liest sich IMHO wesentlich logischer. 

Waehrenddessen REPLACE INTO 't1' VALUES (1,3,'drei'); ebenfalls
funktioniert - hier ist wiederum klar, dass der Datensatz mit id 1
aktualisiert wird. 

Bzw. man kann INSERT einfach durch REPLACE ersetzen, d.h. ein
REPLACE INTO t1 VALUES (0,4,'vier');
fuegt dank AUTO_INCREMENT eine neue Zeile ein. 

Wenn man spaeter die id hat, genuegt das gleiche Kommando,
etwa REPLACE INTO t1 VALUES (4,5,'sechs'), um jene Zeile
zu aktualisieren. 

Kann praktisch sein, wenn man etwa mittels einer einzigen Funktion
neue Datensaetze einfuegen sowie vorhandene updaten moechte. 

Falls jedoch die andere Syntax benutzt wird, kommt man um ein
Neuschreiben der Anweisung nicht herum - dann laesst sich 
gleich besser UPDATE verwenden.

Beste Gruesse,
   Ralf
-- 
: http://kuerbis.org

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive