trigger

Code:
spsvarname varchar(64) AS (CONCAT(feld1,' ',feld2))[/B]

Hallo BerndB,

das ist genau das was ich gebraucht habe, super ... vielen Dank !!!
Ich werde mich sicher bei Fragen wieder melden.
Nochmals ... vielen Dank, an alle !!

Gruß
worst_case
 
Werbung:
Hallo,

jetzt wenn ich schon dabei bin ;-)

Wieder ein Trigger ....

Code:
CREATE TRIGGER trigg_change_spsliste
AFTER update
ON datenpunktliste FOR EACH ROW

select spsname from datenpunktliste

?????????

UPDATE spsliste
SET change = 1;

Soweit so gut, wenn ein Feld in der Datenpunktliste ge-/verändert wird,
soll in der Tabelle spsliste das Feld change auf "1" gesetzt werden.


Jetzt müsste ich noch einfügen ... ?????

In der Zeile, in der der Trigger ausgelöst wird, muss das Feld "spsname" ausgelesen werden,
und danach in der Tabelle spsliste gibt es ebenfalls ein Feld "spsname" vergleichen -> change=1;

=============== datenpunktliste ================
spsname
------------------------------------------------
T1


=============== spsliste ================

spsname change
------------------------------------------------
T1 0
T2 0
T3 0


Ich hoffe ich konnte mein Problem gut erklären.

Gruß
worst_case
 
Sowas vielleicht?

Code:
CREATE TRIGGER trigg_change_spsliste
AFTER update
ON datenpunktliste FOR EACH ROW
  UPDATE spsliste
     SET change = 1
  WHERE spsname = new.spsname;
 
Code:
CREATE TRIGGER trigg_change_spsliste
AFTER update
ON datenpunktliste FOR EACH ROW
  UPDATE spsliste
     SET change = 1
  WHERE spsname = new.spsname;

Hallo castrop,

vielen Dank, ich glaube da stimmt etwas nicht.

Code:
WHERE spsname = new.spsname;

bedeutet das in Worten -> "WHERE datenpunktliste.spsname = spsliste.spsname" ????

Woher kommt das "new.spsname" ???


vielen Dank für die Hilfe !!
 
> Woher kommt das "new.spsname" ???

Auszug aus dem Handbuch:
Within the trigger body, you can refer to columns in the subject table (the table associated with the trigger) by using the aliases OLD and NEW. OLD.col_name refers to a column of an existing row before it is updated or deleted. NEW.col_name refers to the column of a new row to be inserted or an existing row after it is updated.
 
Und MySQL schreibt nur wenn die Daten unterschiedlich sind. Das gilt natürlich auch für einfache UPDATES
Tatsächlich? War mir nicht bewusst. Trigger sind tatsächlich sehr unterschiedlich zwischen den DBMSen, daher halte ich mich da i.d.R. zurück.

MSSQL schreibt immer solange ich das nicht filtere.
 
Hallo,

jetzt möchte ich meinen Trigger erweitern, damit auch eine 2. Tabelle manipuliert wird.

Code:
CREATE DEFINER=`root`@`%` TRIGGER `trigg_change_datenpunktliste`
    AFTER UPDATE ON `datenpunktliste`
      FOR EACH ROW
      BEGIN
        UPDATE spsliste
           SET `CHANGE` = 1
        UPDATE visuliste
           set `spsvarname` = concat(NEW.spsname, '.',NEW.varname)
           WHERE spsname = NEW.spsname OR varname = NEW.varname
       END;

Es wird hier immer ein Syntaxfehler angezeigt und ich sehe es nicht ... :-(

Danke
 
Werbung:
Zurück
Oben