AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Trigger

Ein Thema von stOrM · begonnen am 11. Mai 2017 · letzter Beitrag vom 11. Mai 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#1

Trigger

  Alt 11. Mai 2017, 21:13
Datenbank: MySQL • Version: 57 • Zugriff über: Unidac
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
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: Trigger

  Alt 11. Mai 2017, 21:37
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 ..
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#3

AW: Trigger

  Alt 11. Mai 2017, 21:39
Zitat:
`jb_tabelleA`.`bezeichnung`
NEW.`bezeichnung`



Zitat:
Select * from
Select ZX from
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Trigger

  Alt 11. Mai 2017, 21:42
Zitat:
`jb_tabelleA`.`bezeichnung`
NEW.`bezeichnung`



Zitat:
Select * from
Select ZX from
Genau!
Gruß, Jo
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Trigger

  Alt 11. Mai 2017, 21:45
Ist das denn ein gültiges Select?

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:

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:

http://stackoverflow.com/questions/3...-in-a-variable
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Trigger

  Alt 11. Mai 2017, 22:08
Ist das denn ein gültiges Select?

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:

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:

http://stackoverflow.com/questions/3...-in-a-variable

Die Feldtypen ergeben sich, wenn du im Eingangspost mal schaust was in den Klammern neben den Feldbezeichnern steht.
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
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Trigger

  Alt 11. Mai 2017, 22:18
Ja schon klar, das gibt Dein Select im Trigger aber nicht her.
SQL-Code:
SET NEW.ZX = (Select HierMussDieAuszuwählendeSpalteStehen from jb_tabelleB
  where `jb_tabelleB`.`bezeichnung` = New.WomitNachgeschautWerdenSoll);
Vermutlich also sowas:
SQL-Code:
SET NEW.ZX = (Select ZX from jb_tabelleB
  where `jb_tabelleB`.`bezeichnung` = New.Bezeichnung);
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Trigger

  Alt 11. Mai 2017, 22:34
Ja schon klar, das gibt Dein Select im Trigger aber nicht her.
SQL-Code:
SET NEW.ZX = (Select HierMussDieAuszuwählendeSpalteStehen from jb_tabelleB
  where `jb_tabelleB`.`bezeichnung` = New.WomitNachgeschautWerdenSoll);
Vermutlich also sowas:
SQL-Code:
SET NEW.ZX = (Select ZX from jb_tabelleB
  where `jb_tabelleB`.`bezeichnung` = New.Bezeichnung);
Hm Ok, jetzt hab ich deine Variante probiert in der Tat kein Fehler mehr, allerdings wird das ZX Feld in Tabelle A nicht mit dem aus Tabelle B gefüttert
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

AW: Trigger

  Alt 11. Mai 2017, 22:36
Liefert das SQL denn außerhalb des Triggers das gewünschte Ergebnis?
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Trigger

  Alt 11. Mai 2017, 22:39
Liefert das SQL denn außerhalb des Triggers das gewünschte Ergebnis?
Das ist etwas schwierig ich hab da wenn ich etwas zurück bekommen will einen right join gebastelt, dann kommt auch was zurück (Sorry für mich ist das ganze DB Zeugs extremes Neuland, kann sein das ich mich etwas umständlich anstelle)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz