SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Handbuch der Java-Programmierung

Handbuch der Java-Programmierung zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11.04.2013, 13:41:18
HerrTesla HerrTesla ist offline
Anfänger
 
Registriert seit: Apr 2013
Alter: 35
Beiträge: 2
Trigger für eine Zeile mit mehreren INSERTS

Hallo liebes Forum,

ich schreibe z.Zt. an verschiedenen Triggern für einen Datenaustausch zwischen zwei MySQL-DBs und stehe vor folgendem Problem:

In der Tabelle x wird ein Eintrag mittels INSERT erzeugt
-> nun soll in einer anderen Tabelle (aus der gleichen DB) y eine SELECT-Anfrage gestartet werden, die mehr als einen Eintrag zurückliefert
-> diese Einträge sollen über den Trigger in DB 2 eingetragen werden.

Also habe ich das probiert so zu realisieren:

DELIMITER |

CREATE TRIGGER name AFTER INSERT ON test.x
FOR EACH ROW BEGIN
SET @counter = (SELECT COUNT(spalte) FROM test.y WHERE id = NEW.id);
# Hier soll nun über die Anzahl iteriert werden
FOR 1 TO @COUNTER BEGIN
INSERT INTO db2.z(...) VALUES (...);
END;
END;

| DELIMITER ;

Wie kann ich diese Schleife realisieren?
Denn immer wenn ich diese einfüge, meckert das Programm, dass es ein END erwartet (wahrscheinlich von der ersten FOR-Schleife).

Danke für eure Hilfe
Mit Zitat antworten
  #2  
Alt 12.04.2013, 15:50:22
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Trigger für eine Zeile mit mehreren INSERTS

Zitat:
Zitat von HerrTesla Beitrag anzeigen
Wie kann ich diese Schleife realisieren?
Es sind zwei verschachtelte Schleifen. Möglich, daß MySQL damit überfordert ist.
Mit Zitat antworten
  #3  
Alt 16.04.2013, 15:34:57
HerrTesla HerrTesla ist offline
Anfänger
 
Registriert seit: Apr 2013
Alter: 35
Beiträge: 2
AW: Trigger für eine Zeile mit mehreren INSERTS

Ja, aber genau um diese Frage geht es mir:
Kann MySQL zwei verschachtelte Schleifen umsetzen (in einem Trigger) oder geht das eben nicht (was ziemlich schwach wäre)?

LG
Mit Zitat antworten
  #4  
Alt 17.04.2013, 10:22:06
raiguen raiguen ist offline
Anfänger
 
Registriert seit: Jul 2011
Alter: 71
Beiträge: 30
AW: Trigger für eine Zeile mit mehreren INSERTS

Hier dürfte der Fehler sein:
Code:
DELIMITER |

CREATE TRIGGER name AFTER INSERT ON test.x
FOR EACH ROW BEGIN
SET @counter = (SELECT COUNT(spalte) FROM test.y WHERE id = NEW.id);
# Hier soll nun über die Anzahl iteriert werden
FOR 1 TO @COUNTER BEGIN
INSERT INTO db2.z(...) VALUES (...);
END;
END;

| DELIMITER ;
also das letzte ; ist syntaktisch nicht korrekt. Es MUSS auch nicht notiert werden, da das letzte END die gesamte Routine beendet.

Allerdings wundere ich mich, dass Dir nicht schon ein anderer Syntaxfehler angemeckert wurde:
Code:
FOR 1 TO @COUNTER BEGIN
FOR-Schleifen sind in Triggern nicht erlaubt; siehe hier

Weiterhin sind folgende Syntaxfehler zu erkennen:
Code:
SET @counter = (SELECT COUNT(spalte) FROM test.y WHERE id = NEW.id);
ist ebenso falsch, da SELECT-Anweisungen in dieser Notation ebenfalls nicht erlaubt sind (siehe o.a. Link).
Variablen sollten auch korrekt verwendet werden: @counter ist NICHT @COUNTER!

Dein Trigger könnte dann so aussehen (OHNE Garantie und Haftung):
Code:
DELIMITER |

CREATE TRIGGER name AFTER INSERT ON test.x
FOR EACH ROW BEGIN
	DECLARE counter int;
	DECLARE lfdnr int;
	SELECT COUNT(spalte) INTO counter FROM test.y WHERE id = NEW.id LIMIT 1;
	# Zaehlervariable setzen
	SET lfdnr=0;
	# Schleife fuer Aktion
	WHILE lfdnr<counter DO
		INSERT INTO db2.z(...) VALUES (...);
		SET lfdnr = lfdnr+1;
	END WHILE;
END

| 
DELIMITER ;
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Trigger mit mehreren Statements fips MySQLi/PDO/(MySQL) 1 05.01.2010 12:46:53
MySQL Trigger snuger MySQLi/PDO/(MySQL) 0 22.04.2008 11:47:41
3 vrkn. Tabellen: eine zeile mit mehreren unterzeilen mellow MySQLi/PDO/(MySQL) 2 17.02.2008 22:05:24
Bestimmte Zeile aus .txt Datei auslesen Morph PHP für Fortgeschrittene und Experten 5 07.03.2005 19:32:48
Auswahlmenü mit mehreren Begriffen in einer Zeile (Darstellung?) BenjaminG HTML, CSS und JavaScript Help! 10 05.03.2005 23:38:27


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:59:45 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt