0

私が持っている別のテーブル (顧客)wp_metaが入力されたときに更新するトリガーを設定しようとしています。したがって、基本的に、データが に追加されるとwp_meta、テーブル内の特定のフィールドがcustomers更新されます。たとえば、 でfirst_namelast_nameが更新されると、同じ情報でとが更新されwp_metaます。first_namelast_name

これが私がこれまでに持っているものです:

CREATE TRIGGER update_customers AFTER UPDATE ON wp_usermeta
    FOR EACH ROW
    BEGIN
    customers.first_name = wp_meta.first_name;
    END        

構文エラーが何度も発生します。何が間違っているのか疑問に思っています。区切り文字も に設定しました//

もう 1 つの問題は、データベースwp_metaがキー/値システムに基づいていることです。したがってwp_meta.metakey、関連する がありますwp_metavalue。キーから値を取得する方法がわかりません。

4

2 に答える 2

1

たぶん、このようなものですか?

CREATE TRIGGER update_customers AFTER UPDATE ON wp_usermeta
    FOR EACH ROW
    BEGIN
    update customers set customers.first_name = new.first_name where customers.id=new.id;
    END      

(未検証...)

于 2013-10-17T22:09:08.650 に答える
1

Lajos からの回答は良いスタートです。ただし、(1)トリガー定義が失敗する理由は、「BEGIN」キーワードと「END」キーワードの間のSQLが有効なSQLステートメントではないためであり、(2)AFTERのトリガーも作成する必要があるためです。 INSERT イベントも同様です。そうしないと、レコードが最初に挿入されたときではなく、wp_userdata テーブルが更新されたときにのみ顧客データが取得されます。

CREATE TRIGGER trig_wp_usermeta_after_update AFTER UPDATE ON wp_usermeta
    FOR EACH ROW
    BEGIN
    update customers set customers.first_name = new.first_name where customers.id=new.id;
    END;

CREATE TRIGGER trig_wp_usermeta_after_insert AFTER INSERT ON wp_usermeta
    FOR EACH ROW
    BEGIN
    update customers set customers.first_name = new.first_name where   customers.id=new.id;
    END;
于 2013-10-17T23:11:09.480 に答える