2016-12-10 6 views
2

DB内に単純なtrigger機能を作成しようとしているので、もう一方のテーブルが更新されたときにテーブルの値を変更することができます。ワークベンチで適切にトリガーを作成する方法は?

私はライブラリのデータベースが簡素化されており、問題のテーブルはboakloanbookcopyです。 bookloanにはbookcopyへの外部キーがあります。ここにはisAvailableという列があります。この列のデフォルト値は1(真​​)で、bookloanのテーブルに新しいエントリがあると、書籍のコピーが借用されており、利用できなくなったので、isAvailableの値を0に変更したいfalse)を返します。

私はいくつかの方法でトリガーを書き込もうとしましたが、何も効果がありませんでした。ここで

は私の最後のコードです:

USE `libdb`; 

DELIMITER $$ 

DROP TRIGGER IF EXISTS libdb.bookcopy_update$$ 
USE `libdb`$$ 
CREATE DEFINER=`root`@`localhost` TRIGGER `libdb`.`bookcopy_update` 
BEFORE INSERT 
ON `bookloan` FOR EACH ROW 

BEGIN 

UPDATE bookcopy 
SET bookcopy.isAvailable = 0 
WHERE bookcopy.isAvailable = 1 
AND bookcopy.idBookCopy = bookloan.BookCopy_idBookCopyFK; 


END$$ 
DELIMITER ; 

誰かがこの作業を支援することはできますか? ERROR 1054: 1054: Unknown column 'bookloan.BookCopy_idBookCopyFK' in 'where clause'

+0

ご意見ありがとうございます。はい、ここに投稿する前にコード内でこの部分を変更しましたが、それでも機能しません。今質問を編集します。 –

答えて

1

(あなたのトリガー本体から)このクエリではので、あなたがそのエラーを取得する:定義されたbookloanはありません

UPDATE bookcopy 
SET bookcopy.isAvailable = 0 
WHERE bookcopy.isAvailable = 1 
AND bookcopy.idBookCopy = bookloan.BookCopy_idBookCopyFK; 

私は次のエラーを取得する現在のバージョンでは

bookloan.BookCopy_idBookCopyFKNEW.BookCopy_idBookCopyFKに置き換えます。

+0

ありがとうございました。これはうまくいきました:)面白いのは、以前のバージョンでこのコードがあったことですが、他のものは間違っていました。明らかに私は何をしているのか分かりません –

関連する問題