Mailinglisten-Archive |
> 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. ja und der zweite Witz is ja das man das REPLACE ja wie ein UPDATE verwenden kann, also finde ich es sehr praktisch das man es auch so schreiben kann... ;-) > 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. jein! ;-) ich finde es wirklich sehr praktisch das es auch diese 'SET' schreibweiße sowohl beim REPLACE als auch beim INSERT gibt weil man bei extrem langen Datensätzen mit '(...) VALUE (...)' schnell mal die Übersicht verlieren kann und man bei 'SET' hingegen immer 'name = wert' hat, also gleich sieht welcher Wert in welche Spalte kommt mach mal ne Änderung bei nem sql mit 'VALUES' was über 20 Spalten geht oder so, da kannste dich schnell mal verzetteln > 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. mhm, genauso klar wie als wenn man es mit 'SET' schreiben würde ... > 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. das geht bei 'SET' auch, weil INSERT auch die 'SET'-Schreibweise unterstützt > 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. tschaja, wie gesagt, stimmt nicht, da alle drei Funktion die 'SET' schreibweiße unterstützen. und, wie gesagt, hat die 'SET'-Schreibweiße bei extrem vielen Spalten den entscheidenden Vorteil der besseren Übersichtlichkeit aber ich verstehe deinen Standpunkt schon, is halt wohl größtenteils Gewöhnungssache -- Sebastian Mendel www.sebastianmendel.de www.tekkno4u.de www.nofetish.com -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive