sql >> Database teknologi >  >> RDS >> Mysql

trigger mysql ukendt tabel

Jeg har vist nedenfor, hvad der blev sagt i kommentarerne til spørgsmålet:

CREATE TRIGGER some_trigger AFTER UPDATE ON table_a
    FOR EACH ROW BEGIN
    DECLARE tname VARCHAR(20);
    IF (NEW.field_offer=1) THEN
       UPDATE `table_b` 
       SET STOCK = CASE NEW.field_state 
                   WHEN 0 THEN STOCK - 1 
                   WHEN 1 THEN STOCK + 1 
                   ELSE STOCK 
                   END
       WHERE ID=NEW.ref_field
       ;
    ELSEIF (NEW.field_offer=0) THEN
       UPDATE `table_c` 
       SET STOCK = CASE NEW.field_state 
                   WHEN 0 THEN STOCK - 1 
                   WHEN 1 THEN STOCK + 1 
                   ELSE STOCK 
                   END
       WHERE ID=NEW.ref_field
       ;
    END IF;
    ...

Bemærk, at jeg ændrede opdateringerne fra UPDATE ... JOIN da MySQL ikke tillader dig at ændre dataene i den udløste tabel; mens du faktisk ikke opdaterede table_a, kunne JOIN have været nok til, at MySQL havde gjort indsigelse... det, og joins ville have opdateret hver række i table_b/c der havde et match i table_a , ikke kun table_a rækker relateret til værdierne i eller række af triggeren.




  1. Er det muligt at integrere en MySQL-databaseserver i en Java-servlet?

  2. Hvordan installeres Npgsql som en dataleverandør til ADO.NET Entity Framework?

  3. Returner pre-UPDATE kolonneværdier kun ved brug af SQL

  4. Laravel 4.2 BIT datatype problem