MYSQL Trigger не создается - PullRequest
0 голосов
/ 29 мая 2018

Мне трудно понять, в чем проблема с созданием триггера в приведенном ниже коде: Пожалуйста, помогите.

CREATE TABLE staff (staff_id INT PRIMARY KEY AUTO_INCREMENT NOT NULL, 
firstname VARCHAR(20)
, lastname VARCHAR(20), email VARCHAR(50));
INSERT INTO staff (firstname, lastname, email)
VALUES ('James', 'Kirby', 'jkirby@test.com'),
    ('Betty', 'Featherstone', 'bfeatherstone@test.com');
CREATE TABLE users (user_id INT PRIMARY KEY AUTO_INCREMENT NOT NULL, 
username
 VARCHAR(20), email VARCHAR(50), 
staff_id INT,  FOREIGN KEY (staff_id) REFERENCES staff (staff_id))

DELIMITER //

CREATE TRIGGER after_staff_insert AFTER INSERT ON staff
 FOR EACH ROW
 BEGIN
INSERT INTO users (username, email)
VALUES(CONCAT(NEW.firstname,NEW.lastname,NEW.staff_id),NEW.email);
 END //

DELIMITER;

1 Ответ

0 голосов
/ 29 мая 2018

Я не могу воспроизвести вашу проблему после упомянутых изменений, кодовый блок работает должным образом.Какой идеал вы используете (phpmyadmin, mysqlworkbench) и т. Д.

drop table if exists s,u;

CREATE TABLE s (staff_id INT PRIMARY KEY AUTO_INCREMENT NOT NULL, 
firstname VARCHAR(20)
, lastname VARCHAR(20), email VARCHAR(50));

CREATE TABLE u (user_id INT PRIMARY KEY AUTO_INCREMENT NOT NULL, 
username
 VARCHAR(20), email VARCHAR(50), 
staff_id INT,  FOREIGN KEY (staff_id) REFERENCES staff (staff_id));

drop trigger if exists after_staff_insert;
truncate table debug_table;
DELIMITER //

CREATE TRIGGER after_staff_insert AFTER INSERT ON s
 FOR EACH ROW
 BEGIN
INSERT INTO u (username, email,staff_id)
VALUES(CONCAT(NEW.firstname,NEW.lastname,NEW.staff_id),NEW.email,new.staff_id);

 END //
 delimiter ;

INSERT INTO s (firstname, lastname, email)
VALUES ('James', 'Kirby', 'jkirby@test.com'),
    ('Betty', 'Featherstone', 'bfeatherstone@test.com');


 select * from s;
 select * from u;

MariaDB [sandbox]>  select * from s;
+----------+-----------+--------------+------------------------+
| staff_id | firstname | lastname     | email                  |
+----------+-----------+--------------+------------------------+
|        1 | James     | Kirby        | jkirby@test.com        |
|        2 | Betty     | Featherstone | bfeatherstone@test.com |
+----------+-----------+--------------+------------------------+
2 rows in set (0.02 sec)

MariaDB [sandbox]>  select * from u;
+---------+--------------------+------------------------+----------+
| user_id | username           | email                  | staff_id |
+---------+--------------------+------------------------+----------+
|       1 | JamesKirby1        | jkirby@test.com        |        1 |
|       2 | BettyFeatherstone2 | bfeatherstone@test.com |        2 |
+---------+--------------------+------------------------+----------+
2 rows in set (0.00 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...