2017-12-26 14 views
0

私は2つのテーブル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; 

行がTABLE1に挿入されるたびに、この行はまた、私が作成したトリガによって表2に挿入する必要があります。しかし、文字列 'a'をtable1に挿入すると、正しく表示されます。

after inserting one row

私はTABLE1に2番目の文字列 'b' を挿入した後、結果が間違って表示されます。

after insert two rows

2回目は、表2の同じ行です。その後、私はTABLE1に挿入行を保つため、三回目は、このようなものです:私は解決策を見つけることができないため

after insert three rows

私はここで立ち往生しています。あなたの助けを得ることを願っています。前もって感謝します。

+2

各行について、あなたの挿入節は値(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; 

目のオプションがお奨めされていないはずです。しかし、どこに問題があったかを示すために追加されました。

関連する問題