Триггер базы данных MySQL не работает должным образом

0

У меня две таблицы, таблица1 и таблица2. SQL похож:

create table table1(
  name varchar(100) PRIMARY key not null  
);

create table table2(
  id bigint PRIMARY key AUTO_INCREMENT,
  username varchar(100) not null );
  create trigger trigger_test
  after insert 
  on table1
  for each ROW
    insert into table2 (username)
    select new.name from table1;

Каждый раз, когда строка вставляется в таблицу1, эта строка также должна быть вставлена в таблицу2 с помощью созданного триггера. Но после того, как я вставляю строку 'a' в таблицу1, это кажется правильным.

Изображение 174551

После того, как я вставляю вторую строку 'b' в таблицу1, результат оказывается неправильным.

Изображение 174551.

Во второй раз такая же строка в таблице2. Затем я продолжаю вставлять строки в таблицу1, третий раз выглядит так:

Изображение 174551

Я застрял здесь, потому что не могу найти решение. Надеюсь получить вашу помощь. Заранее спасибо.

Теги:
triggers

1 ответ

0
Лучший ответ

Ваш триггер должен быть либо

create trigger trigger_test
after insert 
on table1
for each ROW
    insert into table2 (username)
    values (new.name);

Или же

create trigger trigger_test
after insert 
on table1
for each ROW
    insert into table2 (username)
    select new.name from table1 where name = new.name;

Второй вариант не рекомендуется. Но добавлено просто, чтобы показать вам, где проблема

Ещё вопросы

Сообщество Overcoder
Наверх
Меню