2017-12-26 34 views
0

두 테이블 table1과 table2가 있습니다. 는 SQL은 같다 :MySQL 데이터베이스 트리거가 제대로 작동하지 않습니다.

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; 

행이 표에 삽입 될 때마다,이 행은 내가 만든 트리거에 의해 표 2에 삽입해야합니다. 하지만 'a'문자열을 table1에 삽입하면 올바르게 표시됩니다. 나는 표에 두 번째 문자열 'B'를 삽입 한 후

after inserting one row

은, 결과가 잘못 표시됩니다.

after insert two rows.

두 번째로 표 2의 같은 행. 그럼,이 표에 삽입 행을 유지, 세 번째는 다음과 같이이다 : 나는 해결책을 찾을 수 없기 때문에

after insert three rows

여기 붙어있다. 도움을 받기를 바랍니다. 미리 감사드립니다.

+2

각 행에 대한 단서는 insert 절이 값 (new.name)이어야한다는 것입니다. –

+0

SQL 문을 어떻게 수정해야합니까? 몇 번 시도한 후에 SQL 문을 수행하는 방법을 모르겠습니다. –

답변

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; 

두 번째 옵션은 사용하지 않는 것이 좋습니다해야한다. 그러나 문제가있는 곳을 보여주기 위해 추가되었습니다.