php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.11.2010, 20:23  
Benutzer
 
Registriert seit: 15.01.2009
Beiträge: 45
greenslot ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Erledigt] Trigger erstellen

Hallo,
ich wollte mir gerade einen Trigger erstellen - hatte vorher damit noch nie was zu tun.
Leider komme ich nur so weit:

Code:
CREATE TRIGGER update_names
AFTER INSERT ON users
FOR EACH ROW
BEGIN
INSERT INTO names (name) VALUES (user.name) WHERE users.id=NEW.id;
END
Wenn in die Tabelle users ein Eintrag erfolgt, soll der Name in die Tabelle names eingetragen werden.

Mir wird immer der Fehler #1064 angezeigt und damit bin ich leider auch nicht weiter gekommen.
Ich habe einfach ein Beispiel genommen und die Namen getauscht.

Könnt mir ihr da bitte weiter helfen?
greenslot ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.11.2010, 20:24  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

1064 ist soweit ich weiß ein Syntaxfehler.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 30.11.2010, 21:09  
Benutzer
 
Registriert seit: 15.01.2009
Beiträge: 45
greenslot ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja, ist bekannt. Aber damit bin ich ja leider nicht weitergekommen. Was fehlt oder ist zuviel?
greenslot ist offline   Mit Zitat antworten
Alt 30.11.2010, 21:52  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

http://dev.mysql.com/doc/refman/5.1/...e-trigger.html
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 01.12.2010, 12:36  
Benutzer
 
Registriert seit: 15.01.2009
Beiträge: 45
greenslot ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok, laut Referenzhandbuch wie folgt angepasst...

Code:
CREATE TRIGGER update_names AFTER INSERT ON users
  FOR EACH ROW BEGIN
    INSERT INTO names SET name = NEW.name;
 END;
Nur leider wird immer noch der selbe Fehler produziert.
Ich steh hier echt aufm Schlauch.
greenslot ist offline   Mit Zitat antworten
Alt 01.12.2010, 12:44  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Ich kenne mich mit Triggern auch nicht wirklich aus, aber bei Syntaxfehlern wird doch immer die Position des Fehlers angegeben, zusammen mit dem Handbuch sollte doch also eine Lösung möglich sein. Ich verstehe nicht, warum du die Fehlermeldung nicht postest.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 01.12.2010, 13:07  
Benutzer
 
Registriert seit: 15.01.2009
Beiträge: 45
greenslot ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ahso...
Der Fehler lautet immer:
Zitat:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
Nur wo ist near ''?
Und warum wird das dann so auf der Seite angegeben?
greenslot ist offline   Mit Zitat antworten
Alt 01.12.2010, 14:28  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Code:
CREATE TRIGGER update_names AFTER  INSERT  ON users
FOR EACH
ROW 
INSERT  INTO  NAMES ( name ) VALUES (NEW.name);
(klappt bei mir, sowohl das Erstellen des Triggers als auch seine Funktionalität)

Ich würde mir allerdings überlegen, ob es wirklich Sinn macht ein Duplikat anzulegen.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 01.12.2010, 16:36  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Problematisch wird das Semikolon sein, deshalb wird in den Beispielen auch ein anderer Delimiter gesetzt.
Code:
DELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON test1
  FOR EACH ROW BEGIN
    INSERT INTO test2 SET a2 = NEW.a1;
    DELETE FROM test3 WHERE a3 = NEW.a1;  
    UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
  END;
|
DELIMITER ;
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Alt 01.12.2010, 19:24  
Erfahrener Benutzer
 
Benutzerbild von drsoong
 
Registriert seit: 05.08.2008
Beiträge: 1.127
drsoong wird schon bald berühmt werden
Standard

Der Hinweis mit dem Delimiter ist wohl der entscheidende. Habe das gleiche Thema mal mit Stored Procedures gehabt. Mit älteren PHP-MyAdmin Versionen (falls Du damit arbeitest) gibts Probleme. Ich glaube, das lag daran, dass man den zu beachtenden Delimiter nicht angeben kann.
drsoong ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SimpleXML - Dokument erstellen bluemagicon PHP Tipps 2010 1 09.11.2010 16:41
[Erledigt] Mysql - Query dynamisch erstellen - String zusammenfügen zoom PHP Tipps 2010 12 19.10.2010 13:50
[Erledigt] mysql - Trigger startet verzögert durch View slanty Datenbanken 14 25.02.2010 21:06
[Erledigt] MySQL Trigger gen Datenbanken 5 30.12.2009 13:42
Websiteteile vom User erstellen lassen magni PHP Tipps 2009 4 15.12.2009 11:17
Kleinen PHP Script "Bannerrotation" aus MySQL-Datenbank erstellen... ispvip PHP Tipps 2009 2 03.11.2009 09:01
PHP Ordner erstellen mit bestimmten Namen matzee PHP Tipps 2009 13 04.09.2009 11:45
Top 100 über bestehende DB erstellen coolkay PHP Tipps 2009 9 23.07.2009 21:35
[Erledigt] jpeg erstellen aus textstring erstellen Psydl PHP Tipps 2009 16 07.07.2009 18:54
[Erledigt] foreach schleife beim erstellen einer image_map schlägt fehl litterauspirna PHP Tipps 2009 8 25.05.2009 13:04
[Erledigt] Trigger löschen Wortak Datenbanken 2 22.04.2009 20:58
darf keine Datenbank erstellen in phpMyAdmin Datenbanken 2 20.10.2005 19:32
Stammbaum erstellen Riot PHP Tipps 2005 17 13.05.2005 16:32
Ordner erstellen und Datei uploaden Juuro PHP Tipps 2005 6 20.01.2005 21:18
Ordner per Skript erstellen --> Rechte Problem PHP Tipps 2004 2 06.07.2004 14:19

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
phpmyadmin trigger erstellen, php trigger erstellen, mysql trigger erstellen, phpmyadmin trigger, phpmyadmin trigger anlegen, phpmyadmin trigger anzeigen, html trigger, trigger generieren, mysql trigger erzeugen, mysql trigger schleife, http://www.php.de/datenbanken/74560-erledigt-trigger-erstellen.html, trigger anlegen mysql, trigger via php script erstellen, trigger phpmyadmin, phpmyadmin trigger bearbeiten, trigger erstellen javascript, erstellen mysql create trigger, phpmyadmin trigger hinzufügen, batch zur eventtrigger erstellung, delimiter php 5.1 ohne phpmyadmin

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:01 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum