Je les trois tableaux suivants dans la base de données MySQL nommé My_Company
[. .____] mysql> desc employé; [. .____] + ---------- + ------------- + ------ + - --- + --------- + ------- + | champ | Tapez | null | clé | Par défaut | Extra | [. .____] + ---------- + ------------- + ------ + ----- + ---- ----- + ------- + | Id | int (11) | NO | PRI | 0 | | [.____] |. Emp_name | varchar (20) | OUI | | NULL | | [.____] |. Division | varchar (20) | OUI | | NULL | | [. .____] + ---------- + ------------- + ------ + ----- + ---- ----- + ------- + 3 rows in set (0.00 sec) [.] .____ mysql> desc outils; [.] .____ + - + ------------- + --------- + ------ ----- + --------- + --- ---- + | Champ | type de | Null | clé | défaut | supplémentaire | [. .____] + ----------- + --------- ---- + ------ + ----- + --------- + ------- + | Division | varchar (20) | NO | PRI | | | [.____] |. Tool_No | int (11) | NO | PRI | 0 | |. [.____] | tool_name | varchar (20) | OUI | | NULL | | [. .____] + ----------- + ------------- + ------ + ----- + --------- + ------- + 3 rows in set (0.01 sec) mysql> desc employee_tools; + ------- + ------------- + ------ + ----- + ------ --- + ------- + | Champ | type de | Null | clé | défaut | supplémentaire | [. .____] + ------- + ------ ----- - + ------ + ----- + --------- + ------- + [. .____] | Id | int (11) | OUI | | NULL | | | outil | varchar (20) | OUI | | NULL | | [. .____] + ------- + ------------- + ------ + ----- + -------- - [. .____] + ------- + 2 rangées dans l'ensemble (0,02 sec) [. .____] [. .____] ----------------- -------------------------------------------------- -
Je dois insérer les lignes d'outils de table à employee_tools lors insérer une nouvelle ligne sur table employee.
Par exemple, si j'insérer une nouvelle ligne aux valeurs des employés comme ('1', 'Michel', 'Network')
Alors le déclencheur doit trouver le tool_No
& tool_names
De la division des outils de table et ajoutez les lignes à employee_tools
Mysql> insert en valeurs de personnel ( '1', 'Michel', 'réseau'); [. .____] [. .____] [. .____] Query OK, une ligne affectée (0,05 sec) mysql> select * de l'employé; + ---- + ---------- + ---------- + | Id | emp_name | Division | + ---- + ---------- + ---------- + | 1 | Michel | Réseau | + ---- + ---------- + ---------- + 1 row in set (0.00 sec) [. .. ____] [.____] mysql> select * des outils;. [.____] + ---------- + --------- + -------- ------ + | Division | Tool_No | Tool_name | + ---------- + --------- + -------------- + | réseau | 1 | Sertisseuse | | réseau | 2 | LAN testeur | [. .____] | réseau | 3 | Sleaver | | matériel | 1 | Vis DRV | [. .____] | matériel | 2 | Testeur d'alimentation | [. .____] | matériel | 3 | Plyer | [. .____] [. .____] + ---------- + --------- + -------------- + 3 rows in set (0.00 sec) mysql> SELECT * de employee_tools; [. .____] + ------ + ------------- - + | Id | Outil | [. .____] + ------ + -------------- + | 1 | 1_Crimper | [. .____] | 1 | 2_LAN Tester | [. .____] | 1 | 3_Sleaver | [. .____] [. .____] [. .____] + ------ + -------------- + 3 rows in set (0.00 sec)
Cela devrait faire le tour pour vous:
DELIMITER $$
DROP TRIGGER IF EXISTS `employee_INSERT` $$
CREATE TRIGGER `employee_INSERT`
AFTER INSERT ON `employee`
FOR EACH ROW
BEGIN
INSERT INTO employee_tools (Id, Tool)
SELECT new.Id, tools.Tool_Name
FROM tools
WHERE tools.Division = new.Division;
END $$
DELIMITER ;