2017-12-07 3 views
0

Ich versuche, einen kleinen Trigger mit folgenden Abfrage in Mysql auszuführen:ERROR 1288: Die Zieltabelle ist nicht aktualisierbar in MySQL Trigger

create trigger sample_trigger after delete on my_network 
    for each row 
    begin 
     update (select active from my_network_ref where id=old.rid limit 1) vnetr set vnetr.active=0; 
    end; 

Nachdem diese Trigger in MySQL Workbench ausgeführt wird, i ma folgende Fehler bekommen

Operation failed: There was an error while applying the SQL script to the database. 
ERROR 1288: The target table vnetr of the UPDATE is not updatable 
SQL Statement: 
CREATE DEFINER = CURRENT_USER TRIGGER `mam_db`.`sample_trigger ` AFTER DELETE ON `my_network` FOR EACH ROW 
BEGIN 
update (select active from my_network_ref where id=old.rid limit 1) vnetr set vnetr.active=0; 
END 

Irgendwelche Syntaxfehler oder strukturelle Probleme? Bitte helfen Sie

Antwort

1

In MySQL können Sie eine Unterabfrage nicht aktualisieren. Statt dessen:

update my_network_ref 
    set active = 0 
where id = old.rid 
limit 1; 

Normalerweise würden Sie order by verwenden, wenn limit verwenden.

+0

Wie kann ich Bestellung durch? Können Sie ein Beispiel mit dieser Abfrage vorschlagen? – user2986042

Verwandte Themen