j'apprécierais n'importe quel exemple sur la manière de définir la valeur sur la ligne ajoutée en fonction des résultats de la requête de différentes tables.
quelque chose comme ça
delimiter |
CREATE TRIGGER trigger BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
NEW.value = (select value from table2 where id=NEW.id)
NEW.value2 = (select value2 from table2 where id=NEW.id)
END;
|
delimiter ;
Cela semble fonctionner. J'exécuterais un SELECT
pour récupérer les deux valeurs
delimiter |
CREATE TRIGGER trigger BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
select value,value2
INTO NEW.value,NEW.value2
from table2 where id=NEW.id;
END;
|
delimiter ;
Si le value
et value2
Sont de type de données INT
, procédez comme suit
delimiter |
CREATE TRIGGER trigger BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
DECLARE v1,v2 INT;
select value,value2 INTO v1,v2
from table2 where id=NEW.id;
NEW.value = v1;
NEW.value2 = v2;
END;
|
delimiter ;
ou do DECLARE v1,v2 VARCHAR(45);
ou quel que soit le type de données approprié
Essayez ceci sur 5.7 +,
delimiter |
CREATE TRIGGER trigger BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
DECLARE v1,v2 INT;
select value,value2 INTO v1,v2
from table2 where id=NEW.id;
SET NEW.value = v1;
SET NEW.value2 = v2;
END;
|
delimiter ;