sql >> データベース >  >> Database Tools >> phpMyAdmin

別の保存されたルーチン内からTRIGGERを作成できません-別の保存されたルーチンとは何ですか?

    上に示したトリガーは問題ありません。

    編集: phpMyAdminのGUIでトリガーを作成する場合、定義にトリガーの本体を入力するだけで済みます。 ペイン、言い換えると、パーツBEGIN...END

    これは、phpMyAdminが巧妙になり、入力した他の要素(名前、テーブル、時間、イベント)に基づいてトリガーヘッダーを書き込もうとするためです。

    phpMyAdminでトリガーを定義する正しい方法は次のとおりです。

    CREATE TRIGGER...を作成する場合 本文内のヘッダーでは、CREATE TRIGGER... CREATE TRIGGER... BEGIN...ENDが表示されるため、MySQLが混乱します。 。これにより、MySQLは、最初のステートメントがCREATE TRIGGERであるトリガーを定義していると見なします。 。

    元の質問の副次的な問題として、トリガーの本体にいくつかの変更を加えることをお勧めします:

    CREATE TRIGGER Update_Last_Transit_Status AFTER INSERT ON Delivery 
    FOR EACH ROW
    BEGIN
      UPDATE Transportation
        INNER JOIN Transit ON Transit.Transportation_ID = Transportation.ID
        INNER JOIN Route ON Transit.ID = Route.Transit_ID
      SET Transportation.Status = 'Dispatched'
      WHERE Route.Delivery_ID = NEW.ID
        AND Transportation.Status = 'In Branch';
    END
    

    変更点:

    • 参照NEW.ID Delivery.IDの代わりに 。
    • SQL-92 JOINを使用する SQL-89の「コンマスタイル」結合の代わりに構文。
    • マルチテーブルのUPDATEを使用する EXISTSの代わりに結合を使用 相関サブクエリを使用します。
    • 文字列には、二重引用符ではなく一重引用符を使用します。
    • UPDATEを終了します セミコロン付きのステートメント。



    1. phpMyAdminmbstringエラー

    2. PHPMyAdminを使用してMySQLのタイムゾーンを設定する

    3. mysqlデータベースがxamppステータスでは非アクティブ化されているのに、xamppコントロールパネルの割り当てでは緑色になっているのはなぜですか?

    4. xamppでphpmyadminのログインオプションを取得する方法