![]() |
Datenbank: MySQL • Version: 57 • Zugriff über: Unidac
Trigger
Hi,
ich habe mal eine Frage zu einem Before Insert Trigger den ich gerne erstellen würde, da bekomme ich aber immer die Fehlermeldung das die Column Bezeichnung nicht existieren würde (In beiden Tabellen vorhanden und exakte Schreibweise beibehalten). Folgendes wäre schön, wenn machbar: Tabelle A Felder Bezeichnung (VarChar) ZX (Integer) Tabelle B Felder Bezeichnung (VarChar) ZX (Ineger) Jetzt wollte ich before das Insert ausgelöst wird die Bezeichnung aus Tabelle A mit der Bezeichnung aus Tabelle B vergleichen, wenn dies Übereinstimmt den Wert aus ZX von Tabelle B in Tabelle A schreiben. Versucht hatte ich folgendes bisher (kann auch völliger Blödsinn sein, ist mein erster Trigger überhaupt):
Code:
CREATE DEFINER=`testUser`@`localhost` TRIGGER `testDB`.`jb_tabelleA_BEFORE_INSERT` BEFORE INSERT ON `jb_tabelleA`
FOR EACH ROW BEGIN SET NEW.ZX = (Select * from jb_tabelleB where `jb_tabelleB`.`bezeichnung` = `jb_tabelleA`.`bezeichnung`); END |
AW: Trigger
mysql ist schon mal zimperlich mit den Feldnamen. Daher wird da gern immer überall mit Hochkomma gearbeitet, wie teilweise auch in Deinem Trigger zu sehen.
Naja und wenn ein Integer Wert gesetzt werden soll, dann muss das Select auch einen Integerwert ergeben. Dein "Select *" würde vielleicht funktionieren, wenn die Quelltabelle nur eine Spalte vom Typ Integer besitzt. Also selektiere gezielt die Spalte, die Du haben willst. Ob der Trigger ansonsten funktioneren kann und Sinn macht, hab ich mir nicht weiter angeschaut. Vermute es steht mit Deinem anderen Thread im Zusammenhang .. |
AW: Trigger
Zitat:
Zitat:
|
AW: Trigger
Zitat:
|
AW: Trigger
Ist das denn ein gültiges Select?
Delphi-Quellcode:
Select * from jb_tabelleB where `jb_tabelleB`.`bezeichnung` = jb_tabelleA`.`bezeichnung`;
Sprich: lässt sich das außerhalb eines Triggers fehlerfrei ausführen? Da hätte ich jetzt erstmal sowas vermutet:
Delphi-Quellcode:
Select b.* from jb_tabelleB b, jb_tabelleA a where a.bezeichnung = b.bezeichnung;
Sind die ` bei MySQL wirklich erforderlich? Abgesehen davon kann ich an dem Inhalt des Triggers erstmal keinen für mich erahnbaren Sinn erkennen. Was ist ZX? Ein Integer? Und der soll den vollständigen Inhalt einer Abfrage aufnehmen? Ein paar Ansätze zu der Aufgabenstellung sind eventuell hier zu finden: ![]() |
AW: Trigger
Zitat:
Die Feldtypen ergeben sich, wenn du im Eingangspost mal schaust was in den Klammern neben den Feldbezeichnern steht.:-D Ich dachte es wäre klar was passieren soll in Tabelle A wird ein neuer Datensatz angelegt... Der Trigger schaut in Tablee B nach dem Bezeichner ist der Identisch nimm den Wert der in Tabelle B in ZX steht und hau den in Tabelle A im Feld ZX rein |
AW: Trigger
Ja schon klar, das gibt Dein Select im Trigger aber nicht her.
SQL-Code:
Vermutlich also sowas:
SET NEW.ZX = (Select HierMussDieAuszuwählendeSpalteStehen from jb_tabelleB
where `jb_tabelleB`.`bezeichnung` = New.WomitNachgeschautWerdenSoll);
SQL-Code:
SET NEW.ZX = (Select ZX from jb_tabelleB
where `jb_tabelleB`.`bezeichnung` = New.Bezeichnung); |
AW: Trigger
Zitat:
|
AW: Trigger
Liefert das SQL denn außerhalb des Triggers das gewünschte Ergebnis?
|
AW: Trigger
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz