Trigger phpmyadmin

vincenzo

Neuer Benutzer
Beiträge
3
Hallo,

ich arbeite mit phpmyadmin. Dort habe ich eine Datenbank, die ich regelmäßig über mysqldump erneuer.

1. Frage: Handelt es sich hierbei um ein `Update` oder ein `Insert`?

Die Update-Datei bekomme ich täglich zur Verfügung gestellt.
Die Datenbank hat eine Ansicht bzw. View aus der ich vor jedem Hochladen die Daten automatisch in einer anderen Tabelle sichern möchte.
Ich habe das mithilfe eines Triggers versucht:
Zeit: Before / Ereignis: Update (Meine obige Frage bezieht sich auf das Ereignis).
INSERT INTO `Tabelle1`( `X`, `Y`, `Z`)
VALUES(OLD.`View1`.`X`, OLD.`View1`.`Y`, OLD.`View1`.`Z`)

Das klappt leider nicht, da bei jedem Hochladen der Datei der Datenbanktrigger gelöscht wird.

2. Frage: Funktioniert ein Trigger auch bei Views?

Habt Ihr einen Vorschlag, wie ich mein Problem gelöst bekomme?

Vielen Dank für eure Hilfe!
Vincenzo
 
Werbung:
vermutlich ein Problem zwischen Bildschirm und Stuhl.

Code:
postgres=# create table vincenzo (i int);
CREATE TABLE
postgres=# create or replace function nothing() returns trigger as $$begin return new; end;$$ language plpgsql;
CREATE FUNCTION
postgres=# create trigger trg_vincenzo before insert on vincenzo for each row execute procedure nothing();
CREATE TRIGGER
postgres=# \d vincenzo 
              Table "public.vincenzo"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 i      | integer |           |          | 
Triggers:
    trg_vincenzo BEFORE INSERT ON vincenzo FOR EACH ROW EXECUTE FUNCTION nothing()

postgres=# insert into vincenzo values (1);
INSERT 0 1
postgres=# \d vincenzo
              Table "public.vincenzo"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 i      | integer |           |          | 
Triggers:
    trg_vincenzo BEFORE INSERT ON vincenzo FOR EACH ROW EXECUTE FUNCTION nothing()

postgres=#

Hier verschwindet der Trigger offenbar nicht - ich habe aber auch dokumentiert, was ich tue. Du nicht.
 
ich arbeite mit phpmyadmin. Dort habe ich eine Datenbank, die ich regelmäßig über mysqldump erneuer.
...und was genau tust du dabei und warum genau tust du das?

Wenn du jedes mal die komplette Datenbank dropst und einen neuen Restore machst, ja dann ist der Trigger im Anschluss weg. Du könntest ihn ja aber neu erstellen, per Script.
1. Frage: Handelt es sich hierbei um ein `Update` oder ein `Insert`?

Die Update-Datei bekomme ich täglich zur Verfügung gestellt.
Was genau machst du den in PHPmyAdmin, steht da UPDATE oder INSERT?
Die Datenbank hat eine Ansicht bzw. View aus der ich vor jedem Hochladen die Daten automatisch in einer anderen Tabelle sichern möchte.
Ich habe das mithilfe eines Triggers versucht:
Zeit: Before / Ereignis: Update (Meine obige Frage bezieht sich auf das Ereignis).
INSERT INTO `Tabelle1`( `X`, `Y`, `Z`)
VALUES(OLD.`View1`.`X`, OLD.`View1`.`Y`, OLD.`View1`.`Z`)
Eine View hat keine i.d.R. keine eigenen Daten (ausgenommen eventuell Schemagebundene Views). Die View verändert sich nicht wenn sich die Daten verändern, der Trigger muss also auf der oder den Tabellen liegen, die der View zugrunde liegen.

Damit nehme ich mal Antwort auf Frage 2 vorweg: Ein Trigger funktioniert nicht bei Views. Es gibt INSTEAD OF Trigger (zumindest bei MSSQL), die funktionieren bei Views. Aber die reagieren auf den Versuch, in die View zu schreiben und führen dann andere Operationen aus, die reagieren nicht auf Veränderungen der Daten, die die View abfragt.
Das klappt leider nicht, da bei jedem Hochladen der Datei der Datenbanktrigger gelöscht wird.
siehe Oben
2. Frage: Funktioniert ein Trigger auch bei Views?
siehe Oben
Habt Ihr einen Vorschlag, wie ich mein Problem gelöst bekomme?
Wenn du die Datenbank "erneuerst" dann führe auch ein Script aus das den Trigger anlegt und das tut, was auch der Trigger auf der View hätte tun sollen.
 
Werbung:
Hallo,

vielen Dank für eure ausführliche Hilfe!
Ich bekomme täglich eine Datensicherung meines Softwareanbieters zur Verfügung gestellt.
Ich habe mir die Datensicherung auf eine Datenbank gespielt, da sich durch die Datenbank die Auswertungsmöglichkeiten, entgegen den im Frontend angebotenen Möglichkeiten, vervielfachen ließen.
Ich werde wohl die KI anweisen, mir solch ein Skript zu programmieren.

Nochmals vielen Dank!
 
Zurück
Oben