| Autor |
Beitrag |
foxy
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Fr 14.02.03 09:03
guden
ich wollt ma fragen, ob mir das einer ma erklären kann was Trigger sind, was sie bezwecken etc.
ein link wäre auch nicht schlecht .... das wurde mal erwähnt in einem IB tut das ich durchgearbeitet habe, aber nich intensiv genug .... 
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
FaTaLGuiLLoTiNe
      
Beiträge: 200
Erhaltene Danke: 5
Windows 7, Windows 8.1
Delphi XE
|
Verfasst: Fr 14.02.03 10:05
| Zitat: |
Ein Trigger ist eine besondere Art Stored Procedure, die aktiviert wird, wenn Sie Daten in einer angegebenen Tabelle einfügen, löschen oder aktualisieren. Trigger können Ihnen dabei helfen, die referentielle Integrität Ihrer Datenbank zu bewahren, indem sie die Konsistenz logisch miteinander verbundener Daten verschiedener Tabellen erzwingen. Referentielle Integrität bedeutet, daß die Primärschlüsselwerte den entsprechenden Fremdschlüsselwerten genau entsprechen müssen.
Der bedeutendste Vorteil von Triggern liegt darin, daß sie automatisch ausgelöst werden. Dies erfolgt unabhängig davon, ob die Daten auf Grund der Eingabe eines Mitarbeiters oder von einer Anwendung geändert werden. Ein Trigger überwacht grundsätzlich eine oder mehrere Operationen, bei denen Daten geändert werden: update , insert , delete . Er wird jeweils einmal in jeder SQL-Anweisung ausgeführt.
Die Ausführung des Triggers erfolgt unmittelbar nach der entsprechenden Datenänderung.
|
(Aus einem Onlinetutorial über Sybase)
Hier mal 'n Link den ich gefunden hab', ich suche aber weiter :
www.interbase2000.de...multipleTriggers.htm
|
|
foxy 
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Fr 14.02.03 10:29
danke 
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 14.02.03 10:33
Moment, jetzt mal langsam. Auf diese Frage habe ich gewartet. Um die Dinger wirst Du nämlich nur schwerlich herumkommen. Eine Definition hast Du ja nun, aber die ist mir zu trocken. Das klassische Beispiel für einen Trigger ist der Ersatz der in IB nicht vorhandenen AutoInc - Funktion. Die ID eines Datensatzes sollte ja wohl am besten automatisch beim neu anlegen hochgezählt werden. So mache ich das jedenfalls :
Quelltext 1: 2: 3: 4: 5: 6: 7:
| CREATE TRIGGER ART8_BI0 FOR ART8 ACTIVE BEFORE INSERT POSITION 0 AS begin IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID (GEN_ART8_ID,1); end |
Immer dann, wenn ein neuer Datensatz eingefügt wird, wird der Trigger aktiv. Hierfür ist das ACTIVE BEFORE INSERT zuständig. Genauso gut könnte man da eine Select-Anweisung oder was anderes reinschreiben. In dem Beispiel wird halt der Generator benutzt.
_________________ Gruß
Hansa
|
|
foxy 
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Fr 14.02.03 10:38
danke hansa
aber erklär mir ma bitten den code
Quelltext 1: 2: 3: 4:
| begin IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID (GEN_ART8_ID,1); end |
was ist new.id , gen_id ,gen_art8_id ??? muss ich ja wissen, das ich meine namen einsetzte. also mein generator heisst fimen_gen mein tigger --> firmen_tig
wo muss ich das nu einsetzten? aso und meine tabelle heist firmen 
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 14.02.03 10:57
| foxy hat folgendes geschrieben: | | aber erklär mir ma bitten den code |
Wie, ich denke, Du hast das sowieso schon verstanden ?  Fast hätte ich das gar nicht mehr gepostet.
GEN_ART8_ID --> fimen_gen
ART8_BIO --> firmen_tig
NEW.ID bleibt, es sei denn die ID heißt anders und FOR ART8 heißt bei Dir FOR firmen
Ah, noch was : Ich komme da mit der Nomenklatur auch immer wieder durcheinander. Deshalb mache ich das mit IBexpert, hab Dir den schon mal empfohlen. Dort sage ich einfach, welche Table und welche Aktion ausgeführt werden soll (BEFORE INSERT, AFTER UPDATE usw.) und schon baut der mir das Ding richtig zusammen.
_________________ Gruß
Hansa
|
|
foxy 
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Fr 14.02.03 11:09
joa ich werde mir ma den IBExp. ma ankucken 
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
|