Скопировать идентификатор после вставки в другую таблицу - PullRequest
0 голосов
/ 15 мая 2019

У меня есть две таблицы, но я бы хотел установить триггер. Когда я вставляю нового пользователя в мою таблицу users, я хотел бы скопировать этого id в другую таблицу: results.

Таблица users:

| userID | name     | email             | password |
+--------+----------+-------------------+----------+
| 1      | Person A | mailA@gmail.com   | 12345    |
+--------+----------+-------------------+----------+
| 2      | Person B | mailB@yahoo.com   | 13579    |
+--------+----------+-------------------+----------+
| 3      | Person C | mailC@outlook.com | 24681    |
+--------+----------+-------------------+----------+

Таблица results:

| resultID | userID | TestA | TestB |
+----------+--------+-------+-------+
| 162      | 1      | 84    | 63    |
+----------+--------+-------+-------+
| 028      | 2      | NULL  | 54    |
+----------+--------+-------+-------+
| 821      | 3      | 77    | 60    |
+----------+--------+-------+-------+

Я хотел бы скопировать userID из таблицы users в userID в таблице results после вставки. Я пробовал разные варианты с триггерами, но ничего не решило мои проблемы.

Один из них:

CREATE TRIGGER T_TableA_I
on users
after insert
as
    set nocount on

    insert into results (userID)
    select u.UserID
    from
        users u
            inner join
        results r
            on
                u.UserID = r.UserID

Возможно, моя структура не соответствует руководящим принципам, но это концепция.

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Я все еще не уверен, что понимаю вопрос, но вот фрагмент кода для разговора

drop table if exists us,res;
create table us (id int);
create table res (id int);

drop trigger if exists t;
delimiter $$
create trigger t after insert on us
for each row
begin
    insert into res(id) values (new.id);
end $$

delimiter ;

insert into us values (1);
select * from us;
 +------+
| id   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

select * from res;

+------+
| id   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)
0 голосов
/ 15 мая 2019

Я написал следующий фрагмент кода, но не мог понять, где взять результат теста!

CREATE TABLE IF NOT EXISTS users (
userID INT(6) UNSIGNED PRIMARY KEY,
name VARCHAR(255),
password VARCHAR(255),
email VARCHAR(255)
);
CREATE TABLE IF NOT EXISTS results (
resultID INT(6) UNSIGNED PRIMARY KEY,
userID VARCHAR(255),
TestA VARCHAR(255),
TestB VARCHAR(255)
);

/* trigger query */
CREATE TRIGGER new_user_added 
AFTER INSERT ON users
FOR EACH ROW 
INSERT INTO results values('162', NEW.userID, '84', '63');

/* insert query */
replace into users values('1', 'Person A', 'mailA@gmail.com', '12345');

select * from users;
select * from results

Пользователи

| userID | name     | email             | password |
+--------+----------+-------------------+----------+
| 1      | Person A | mailA@gmail.com   | 12345    |
+--------+----------+-------------------+----------+

Результаты

| resultID | userID | TestA | TestB |
+----------+--------+-------+-------+
| 162      | 1      | 84    | 63    |
+----------+--------+-------+-------+

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...