2016-07-27 7 views
0

Ich habe 2 Tabellen mit dieser Struktur:Wert einfügen Nach Execute Trigger

ID | Revision | Purpose 
------------------------- 
1 |  A  | 3 

Tabelle 1 ist, wo ich die Informationen zu speichern, Tabelle 2 mit einem Trigger nach dem Update Tabelle gefüllt ist 1. Hier ist der Auslöser:

TRIGGER `update` AFTER UPDATE ON `table 1` 
FOR EACH ROW INSERT INTO table 2 (
Id, 
Revision, 
Purpose, 
) 
VALUES 
(
OLD.Id, 
OLD.Revision, 
OLD.Purpose, 
); 
$$ 
DELIMITER ; 

Alles hat seine Ordnung, aber jetzt möchte ich die Struktur der Tabelle ändern 2 dazu:

ID | Revision | Purpose | Change 
----------------------------------- 
1 |  A  | 1  | Purpose change to 1 

Ich möchte, dass der Benutzer 1 eine Beschreibung dessen, was ändert sich von Tisch schreiben und es dann auf Tabelle speichern 2.

ich das Feld versuchen, erstellen und dann tun Sie das Update wie immer:

Update Table 1 ...... where Id = Id 

Und dieses funktioniert, aber Tabelle 2 kann viele Zeilen mit derselben ID enthalten, daher ist dies keine Option. Irgendeine Lösungsmöglichkeit?

Auch versuche ich Schöpfung das Feld in Tabelle 1 auch, aber das bedeutete, dass ich alle meinen Code ändern, aber ich will nur dieses Feld in Tabelle 2.

Antwort

0

Sie können einen MySQL-Variable verwenden:

1: Vor dem table 1 zu aktualisieren, legen Sie eine Benutzervariable @purpose_change:

set @purpose_change = 'Purpose change to 1'; 

2: auch Sie auslösen wie folgt ändern:

CREATE TRIGGER `update` AFTER UPDATE ON `table 1` 
FOR EACH ROW INSERT INTO table 2 (
Id, 
Revision, 
Purpose, 
Change 
) 
VALUES 
(
OLD.Id, 
OLD.Revision, 
OLD.Purpose, 
@purpose_change /* user variable */ 
); 
$$ 
DELIMITER ; 

Die @purpose_change wird in der gleichen Verbindung existiert.