2017-11-23 11 views
1

以下の構造を持つ2つのテーブルがあります。私が本の表に追加しようとすると、私が予想した子の行を追加または更新できないというエラーが発生します。私は、ブックテーブルに追加する前にパブリッシャ名をパブリッシャテーブルに追加するためのトリガを作成することができると期待していました。子テーブルに挿入するときに、親テーブルに値を挿入するためのトリガー

これは初めてのトリガーの作業で、私が間違っていることがわかりませんし、例が見つかりません。

create table publishers 
    (name varchar(25) not null, 
    address varchar(55), 
    phone varchar(12), 
    PRIMARY KEY(name) 
    ) ENGINE = INNODB; 

create table books 
    (book_id int(4) not null auto_increment, 
    title varchar(40), 
    publisher_name varchar(25), 
    primary key (book_id), 
    foreign key (publisher_name) references publishers(name) ON UPDATE CASCADE ON DELETE CASCADE 
    ) ENGINE=INNODB; 

と私が作成しようとしていますトリガ:

DELIMITER /// 
CREATE TRIGGER add_publisher BEFORE insert ON books 
    FOR EACH ROW 
    BEGIN 
    INSERT INTO publishers(name) values (books.pubisher_name); 
END; 
/// 

DELIMITER ; 
+0

このストアドプロシージャは、私が考えるより良い選択になります... – Blag

+0

質問、mysqlのバージョンは何ですか? – Blag

+0

@Blag私は5.1を使用しています。 –

答えて

1

をNEW.publisher_nameためbooks.publisher_nameを交換してください。

DELIMITER /// 
    CREATE TRIGGER add_publisher BEFORE insert ON books 
     FOR EACH ROW 
     BEGIN 
     INSERT INTO publishers(name) values (NEW.publisher_name); 
    END; 
    /// 
DELIMITER ; 
+0

ありがとう。私はこれを試したと思った。私は間違ったことを綴ったに違いありません。 –

関連する問題