0

MySQL と phpmyadmin v3.4.5 を使用してテーブルにトリガーを作成する際に問題が発生しています。いくつかの調査の後、これは一般的な問題のようですが、私が見つけた修正はどれも私にとってはうまくいきません. 私が得ているエラーは次のとおりです。

 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 8

私が実行しようとしているクエリは次のとおりです。

 CREATE TRIGGER book_insert
 AFTER INSERT ON `books`
 FOR EACH ROW BEGIN
 INSERT INTO products
      (ProductID,Type,Title,Price) 
 VALUES 
      (books.ProductID,0,books.Title,0)
 END
 //

PHPMyAdmin がクエリで delimiter キーワードを使用することを好まないことを読んだので、クエリ入力の下のテキストで区切り文字を // に設定しました。また、END と '//' の間にスペースを入れず、スペースを 1 つ入れ、別の行で試して、区切り記号の配置をいじってみました。また、デフォルトのセミコロン、2 つのドル記号、2 つのポンド記号など、さまざまな区切り記号を試しました。これは本当に小さくてばかげているように思えますが、そのステートメントのどこが気に入らないのかわかりません。

4

2 に答える 2

0

そのため、クエリからBEGINとENDを削除し、区切り文字をまったく使用しないことで、ようやく機能するようになりました。私のバージョンのMySQLにBEGIN/Endステートメントなどの問題があるかどうかはわかりませんが、トリガーは最終的に作成されました。

于 2012-11-04T05:52:15.863 に答える
0

DELIMITER は SQL 構文ではありません。これは、mysql コマンド ライン クライアントがサーバーへのクエリの読み取り方法と送信方法を変更するために受け入れるコマンドです。PhpMyAdmin もサーバーもそれについて何も知りません。

この場合、末尾の // なしでトリガーをクエリとして送信するだけです。または、PMA に正しく実行させるには、ファイルに入れて送信する必要がある場合があります。ツールとしての PMA は、このようなばかげたことを行い、生活をより困難にすることが多いため、正確にはわかりません。

于 2012-11-04T02:29:13.967 に答える