hilfdirselbst.ch
Facebook Twitter gamper-media
Anonym
Beiträge: 22827
1. Mär 2004, 13:53
Beitrag #1 von 9
Bewertung:
(1203 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Variablen in mysql


Hallo!

Ich habe eine Tabelle A mit einem auto_increment Feld namens ID und eine Tabelle B, in die ID aus A als Foreign Key eingetragen werden soll. In einem Sql Skript erstelle ich beide Tabellen und möchte dann sofort Werte eintragen. Ich habe mir das in etwa so vorgestellt:

Insert into A Values ();
var = Select MAX(ID) from A;
Insert into B (A_ID, DATA) Values (var, 'irgendwas');

Leider weiß ich nicht, wie man mit Variablen umgeht.
Kann mir hier jemand weiterhelfen?
Gibt es einen besseren Weg das Problem zu lösen?

Besten Dank! Top
 
X
oesi50  A  S
Beiträge: 2315
1. Mär 2004, 15:06
Beitrag #2 von 9
Beitrag ID: #72853
Bewertung:
(1203 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Variablen in mysql


hi,
probier mal das:

Insert into A Values ();
Insert into B (A_ID, DATA) Values (LAST_INSERT_ID(), 'irgendwas');

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#72828] Top
 
Anonym
Beiträge: 22827
1. Mär 2004, 15:28
Beitrag #3 von 9
Beitrag ID: #72860
Bewertung:
(1203 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Variablen in mysql


Vielen Dank!
als Antwort auf: [#72828] Top
 
Anonym
Beiträge: 22827
2. Mär 2004, 07:18
Beitrag #4 von 9
Beitrag ID: #72951
Bewertung:
(1203 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Variablen in mysql


Hallo!

Hab nun ein neues Problem - im wesentlichen eine Verallgemeinerung des 1. Problems:

Wie funktioniert es, wenn ich 3 Tabellen A, B und C habe. Der Primary Key von A ist wieder ein auto_increment Wert, der sowohl in B als auch in C als Foreign Key eingetragen werden soll. Der Primary Key von B und C ist ebenfalls ein auto_increment Wert.

Insert into A Values ();
Insert into B (A_ID, data) Values (LAST_INSERT_ID(), 'irgendwas');
Insert into C (A_ID, data) Values (LAST_INSERT_ID(), 'irgendwas');

Für die Tabelle C würde in diesem Fall die ID der Tabelle B geliefert werden und nicht wie beabsichtigt die ID der Tabelle A.

Was kann man in diesem Fall machen?

Grüsse,
--Alex
als Antwort auf: [#72828] Top
 
oesi50  A  S
Beiträge: 2315
2. Mär 2004, 11:24
Beitrag #5 von 9
Beitrag ID: #72992
Bewertung:
(1203 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Variablen in mysql


hi Alex,

versuch mal so etwas:

mysql_query("Insert into A Values ()") or die("Invalid query: " . mysql_error());
$letzte_id = mysql_insert_id();
mysql_query("Insert into B (A_ID, data) Values ($letzte_id, 'irgendwas')");
mysql_query("Insert into C (A_ID, data) Values ($letzte_id, 'irgendwas')");

Es ist wichtig, zu prüfen ob der erste Insert fehlerfrei war, sonst werden in den Nachfolgenden falsche Werte(NULL, 0 oder default) eingetragen.

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#72828]
(Dieser Beitrag wurde von oesi50 am 2. Mär 2004, 11:40 geändert)
Top
 
Anonym
Beiträge: 22827
2. Mär 2004, 13:13
Beitrag #6 von 9
Beitrag ID: #73009
Bewertung:
(1203 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Variablen in mysql


Hallo Oesi!

Danke für Deine Antwort, aber ich bräuchte irgend etwas, das ich in ein SQL Create Skript schreiben kann bzw. direkt in der mysql shell eingeben kann. Gibt es da noch irgeneine andere Möglichkeit?

Grüsse,
--Alex
als Antwort auf: [#72828] Top
 
Anonym
Beiträge: 22827
2. Mär 2004, 13:17
Beitrag #7 von 9
Beitrag ID: #73013
Bewertung:
(1203 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Variablen in mysql


Hallo Oesi!

Danke für Deine Antwort, aber ich bräuchte irgend etwas, das ich in ein SQL Create Skript schreiben kann bzw. direkt in der mysql shell eingeben kann. Gibt es da noch irgeneine andere Möglichkeit?

Grüsse,
--Alex
als Antwort auf: [#72828] Top
 
oesi50  A  S
Beiträge: 2315
2. Mär 2004, 14:08
Beitrag #8 von 9
Beitrag ID: #73025
Bewertung:
(1203 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Variablen in mysql


INSERT INTO test1 VALUES();
SELECT @letzte_id := LAST_INSERT_ID();
INSERT INTO test2 (id1, data) VALUES (@letzte_id, 'irgendwas');
INSERT INTO test3 (id1, data) VALUES (@letzte_id, 'irgendwas');

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#72828]
(Dieser Beitrag wurde von oesi50 am 2. Mär 2004, 14:09 geändert)
Top
 
Anonym
Beiträge: 22827
2. Mär 2004, 14:52
Beitrag #9 von 9
Beitrag ID: #73034
Bewertung:
(1203 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Variablen in mysql


Vielen Dank (schon wieder)!

Das war, was ich gesucht habe!

Grüsse,
--Alex
als Antwort auf: [#72828] Top
 
X