php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 11-12-2010, 16:58
gone
 Registrierter Benutzer
Links : Onlinestatus : gone ist offline
Registriert seit: Dec 2010
Beiträge: 2
gone befindet sich auf einem aufstrebenden Ast
Standard MySql Trigger vs. Alternativen

Hallo,

ich bin gerade dabei, mich ein wenig in die (für mich neuen) MySql Trigger einzulesen.
Die Beschreibung ist ordentlich, auch findet man viele Tutorials...
Das WIE ist also an sich nicht das Problem.

Vielmehr bin ich gerade auf einer Seite für Mysql-Perfromance-Tipps auf die Aussage "use trigger wisely" gestoßen, ohne jedoch irgendwo nähere Angaben dazu finden zu können.
Daraus ergeben sich für mich nun 2 Fragen, auf die ich im Netz (danke "G") leider keine ausreichenden Antworten finden konnte.
Deswegen hoffe ich, ihr könnt mir helfen:

a) Wie performant sind Trigger?
Grundsätzlich ist es ja so, das ich so ziemlich jeden Trigger auch als einzelne Mysql-Anweisungen schreiben könnte.
Also selbst ein "doppelter" Trigger, der bei einem INSERT zusätzlich ein INSERT in Tabelle 2 und ein UPDATE in Tabelle 3 machen soll, ließe sich ja auch als
PHP-Code:
INSERT INTO Tabelle 1...
INSERT INTO Tabelle 2...
UPDATE Tabelle 3 
schreiben.
Das sind 3 Mysql-Statements, die abgefeuert werden, während die "Trigger-Events" ja innerhalb von MySql vordefinierte Objekte feuern.


b) Wenn ich mir nun also mein Fallbeispiel aus a) ansehe, stellt sich mir die Frage, WANN nutze ich eigentlich Trigger anstatt oben genannter Einzelanweisungen oder stored procedures?

Mir ist bewusst, das meine Fragestellung recht allgemein sein mag, aber ich hoffe, ihr könnt mir hier ein wenig Licht ins Trigger-Dunkel bringen.
Mit Zitat antworten
  #2 (permalink)  
Alt 11-12-2010, 19:24
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

zu dem "wisely" gehört das vorausdenken .. du hast also deinen Trigger für Tabelle 1, der in Tabelle 2 und 3 herumfuhrwerkt - dann spinne ich mal einen weiteren Trigger dazu, der bei Insert in Tabelle 2 irgendwas in Tabelle 1 und Tabelle 3 anstellt - vielleicht wieder ein Insert - und was hast du dann gebaut ? ... eine Endlos-schleife, auf die du von außen keinen Einfluss hast - weil alles innerhalb von mysql abläuft - bei deinen Inserts von Hand hängt immer noch dein Programm / Webscript dazwischen und kann Abbruchbedingungen und Ausnahmen definieren - eben dass beim Insert in Tabelle 1 zwar die nachfolgenden beiden Inserts zwangsläufig erfolgen - aber eben NICHT so, als würdest du "natürliche" Inserts in Tabelle 2 ausführen.

Du musst dir klarmachen, dass ein Trigger so ziemlich das dümmste Stück Programmcode, dass ich kenne - der rennt einfach stur seine Anweisungen durch - und löst halt mitunter munter weitere Trigger aus

Im übrigen weiß ich nicht, wie gut sich Trigger mit Transaktionen vertragen. Es kann halt beim Rollback sein, dass nur die Initiale Anweisung zurückgedreht wird, aber nicht die Sekundär-Einträge durch Trigger
__________________

Wer LESEN kann, ist klar im Vorteil!

Geändert von eagle275 (11-12-2010 um 19:27 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 11-12-2010, 20:14
gone
 Registrierter Benutzer
Links : Onlinestatus : gone ist offline
Registriert seit: Dec 2010
Beiträge: 2
gone befindet sich auf einem aufstrebenden Ast
Standard

Okay, also das mit dem "dümmsten Stück Programmcode" leuchtet mir, vielen Dank @eagle

Wenn Schritt 2 und 3 aus meinem oberen "Beispiel" lediglich Einträge/Updates in Log-Tabellen wären, bei denen ich definitiv wüsste, das ich auf Ihnen keine weiteren Trigger anwende, wären hier Trigger also durchaus ein moderates Mittel...?
Oder spricht noch etwas dafür, lieber auf einzelne Anweisungen als auf Trigger zu setzen?

Ich gehe davon aus, das ausgelöste Trigger-Aktionen auf annährend gleiche Weise mit den Ziel-Tabellen umgehen, also die Tabellen/Reihen genauso "locken" wie alle anderen mySql-Statements?
Ist das korrekt?
Mit Zitat antworten
  #4 (permalink)  
Alt 12-12-2010, 01:45
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

MySQL :: MySQL 5.0 Reference Manual :: 12.3.5.2 LOCK TABLES and Triggers
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQL Trigger -> CSV Export Skrok SQL / Datenbanken 5 04-02-2010 14:01
Trigger Problem MS-SQL Skrok SQL / Datenbanken 2 23-06-2008 11:38
Variable in Trigger verwerfen / Trigger mit Parameter tracer23 SQL / Datenbanken 2 29-04-2008 14:33
MySQL 5 Problem mit Trigger Shadun SQL / Datenbanken 2 01-11-2006 10:33
MYSQL 5 und trigger Mirandus SQL / Datenbanken 1 25-01-2006 19:31

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:47 Uhr.