PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : INSERT und SELECT in eine Abfrage...



mehlvogel
06-01-2003, 14:42
Wie kann ich nen INSERT und SELECT Befehl kombinieren, so das ich nur einen Query brauche - also in etwa so:



INSERT INTO tab_2 SELECT * FROM tab_1 WHERE col_1 = "isdhfka"


geht das so, und so?



INSERT INTO tab_2 SELECT col_1, col_2, col_3 FROM tab_1 WHERE col_1 = "isdhfka"


oder muss man das ganz anders amchen? geht das in einer Abfrage?

mehlvogel
06-01-2003, 16:07
Oke hab mittlerweile rausgefunden, das das so kein problem ist.

Aber ich muss eine Spalte fest eintragen, also einen bestimmten wert, der nicht in der Datenbank steht also:

Spalte : col_stat = '1'
und alles andere muss aus der DB tab_1 übernommen werden.

Bislang ist es so das ich hinter nen UPDATE Befehl drüber schicke - was mir aber nicht sonderlich sicher erscheint wenn jemand zufällig zwischen den beiden BEfehlen die Prozedur nochmal aufruft.

Christoph
06-01-2003, 19:56
a) zu deiner konstanten Spalte:
Du kannst auch Konstanten selektieren, also z.B.

SELECT '1', feld1, feld2 FROM tabelle;

b) zum Mehrbenutzerzugriff:
Du machst doch hoffentlich deine Änderungen innerhalb einer
Transaktion, d.h. am Anfang BEGIN WORK und am Ende COMMIT?
Wenn ja, dann sind parallele Zugriffe kein Problem (je
nach TRANSACTION ISOLATION LEVEL).
Wenn nein, dann ändere schleunigst deinen Code!!!

Christoph

mehlvogel
06-01-2003, 20:28
Bei ner mySQL Tabelle ?

Ich gebe zu, ich kenn die Befehle noch nichtmal un dhab auch noch nichts von dieser isolation dingens gehört...

Gaert
06-01-2003, 20:48
Hehe!

Von MySQL war ja keine Rede!

Aber Transaktionen gibts ja auch bei MySQL, hab ich allerdings noch nie genutzt... bin mir auch ziemlich sicher, dass das wegen der Art der Verbindung über den Webserver voll in die Grütze geht!
Apache verwendet ja normal eine persistente Verbindung, als eigener Benutzer zu MySQL => Es gibt keine wirkliche "Mehrbenutzer" Umgebung, was heissen soll, wenn man einmal eine Transaktion in einem Skript aufmacht und in einem anderen ein Rollback macht, dann sind auch die Aktionen vom vorherigen Skript rückgängig gemacht!

Christoph
07-01-2003, 10:48
Original geschrieben von mehlvogel
Bei ner mySQL Tabelle ?

Ach so, ich hatte gedacht Du verwendest eine relationale Datenbank :)

Gaert
07-01-2003, 18:29
Heh!

Hier keinen Stunk gegen MySQL verbreiten!

Klar... MySQL hat nicht den Funktionsunmfang von einem Oracle oder DB2... aber dafür braucht man dafür auch keinen Mehrprozessor Rechner mit 2 GB RAM :D

Ausserdem siehts Geschwindigkeits- und Stabilitätstechnisch im Vergleich zu anderen DBMS gerade bei MySQL 4 ziemlich gut aus!

Siehe hier:
http://www.eweek.com/article2/0,3959,293,00.asp

Christoph
07-01-2003, 18:49
Original geschrieben von Gaert
Hier keinen Stunk gegen MySQL verbreiten!
Entschuldigung, konnte mir den scherzhaften (beachte den Smiley)
Seitenhieb nicht verkneifen.

Bin mit Dir völlig einer Meinung, dass es Bereiche gibt,
in denen der Einsatz von MySQL durchaus sinnvoll ist, insbesondere
wenn bei den Betreibern wenig Datenbank-KnowHow vorhanden ist:
die zwei Stärken von MySQL sind IMHO die leichte Administrierbarkeit
und dass es für einfache Aufgaben auch ohne weiteres Tuning
eingermassen performant ist (natürlich kann man aus Oracle oder
auch PostgreSQL mehr herausholen, dafür muss man dann aber einiges
Datenbank KnowHow haben).

Gaert
07-01-2003, 19:08
Ich hab den Smiley gesehen.... beachte meinen Smiley!