1

フィールド名に応じて挿入されるたびにフィールドの値を変更できる、phpMyAdminでトリガーを作成しようとしています。私はこの構文を使用しています

CREATE TRIGGER lawyers AFTER INSERT ON wp_posts
FOR EACH ROW
BEGIN
UPDATE wp_posts SET post_content = '<!--:en-->&nbsp;<!--:--><!--:ES-->&nbsp;<!--:-->'      
WHERE ID = NEW.ID AND post_type = 'lawyers';
END

しかし、私はそれを機能させることができません、それは言います:

#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 '' at line 4

手伝ってくれませんか?

4

1 に答える 1

2

とにかく、挿入先と同じテーブルを更新して、そのようなトリガーを作成することはできません。トリガーをテストしたところ、次のようになりました。

ERROR 1442 (HY000): Can't update table 'wp_posts' in stored function/trigger
because it is already used by statement which invoked this stored 
function/trigger.

以下は、トリガーと同じことを行う必要があります。

CREATE TRIGGER lawyers BEFORE INSERT ON wp_posts
FOR EACH ROW
BEGIN
 IF (NEW.post_type = 'lawyers') THEN
  SET NEW.post_content = '<!--:en-->&nbsp;<!--:--><!--:ES-->&nbsp;<!--:-->';
 END IF;
END

回答: CREATE TRIGGER または CREATE PROCEDURE を使用する場合、phpMyAdmin には特別なモードが必要です。

  • SQL Query ボックスの下に、 Delimiterというラベルの付いた小さなフォーム フィールドがあります。これを に設定し$$ます。

  • CREATE TRIGGER ステートメントを入力し$$、最後のEND.

  • [移動] ボタンをクリックします。

http://wiki.phpmyadmin.net/pma/Triggerを参照してください。

これは、mysql コマンドライン クライアントでDELIMITER組み込みコマンドを使用するのと似ています。

于 2013-07-31T18:25:57.500 に答える