2010-11-19 11 views
0

derzeit habe ich eine ziemlich seltsame Anforderung, aber dennoch muss es gelöst werden!Doppelte Zeilen über mehrere Tabellen beim Einfügen in MySQL

Wir haben mehrere Tabellen, mit den folgenden Namen:

DATEI_1, file_2, DATEI_3.

Wenn ein Benutzer eine Zeile in Datei_1 einfügt, muss sie in Datei_2 & Datei_3 dupliziert werden. Wenn ein Benutzer eine Zeile in file_2 einfügt, muss dies in Datei_1 & file_3 geschehen. Ich habe bereits versucht, einen Auslöser, so zu erstellen:

CREATE TRIGGER duplicatepictures BEFORE INSERT ON wp_ngg_pictures 
    FOR EACH ROW 
    INSERT INTO wp_2_ngg_pictures(post_id, galleryid, filename, description, alttext, imagedate, exclude, sortorder, meta_data) 
    VALUES (NEW.post_id, NEW.galleryid, NEW.filename, NEW.description, NEW.alttext, NEW.imagedate, NEW.exclude, NEW.sortorder, NEW.meta_data); 

Aber das funktioniert nicht aus, da keine Zeile eingefügt wird, wenn dieser Trigger zu mehr als eine Tabelle hinzugefügt wird.

Das Ganze muss in SQL gelöst werden, da das Programm, das die Informationen in die Datenbank eingibt, nicht geändert werden kann. Irgendwelche Vorschläge?

UPDATE:

ich vergaß zu erwähnen, nachdem die Zeilen a eingefügt, müssen sie editierbar indepent voneinander sein.

+0

Die dumme Frage: Warum müssen Sie Zeilen über Tabellen duplizieren? Das ist normalerweise eine schlechte Sache. –

+0

in einer akward Situation wie diese würde ich ein PHP-Skript cronjob, um den gewünschten Job zu tun. –

+0

Wie auch immer ich denke Trigger sollte CREATE sein ... NACH EINFÜGEN ... – MatTheCat

Antwort

0

Sie könnten es mit Ansichten lösen (MySQL 5 erforderlich).

Erstellen Sie eine Tabelle, die alle Dateien enthält (z. B. file_all) und fügen Sie alle vorhandenen Datensätze ein.

Dann fallen DATEI_1, file_2 und DATEI_3:

drop table file_1; 
drop table file_2; 
drop table file_3; 

Dann 3 Ansichten erstellen:

create view file_1 as select * from file_all; 
create view file_2 as select * from file_all; 
create view file_3 as select * from file_all; 

finden Sie in der Dokumentation auf updatable views

+0

Klingt gut! Aber leider vergaß ich zu erwähnen, dass später die Tische unberechtigt editierbar sein sollten. –

0

Kann file_2 und DATEI_3 Aliase DATEI_1 gemacht werden?

+0

Leider nicht, da die Tabellen unabhängig voneinander editierbar sein müssen. –