【问题标题】:Not create trigger using dbDelta() in wordpress不在 wordpress 中使用 dbDelta() 创建触发器
【发布时间】:2018-07-10 16:31:27
【问题描述】:

我正在尝试使用我正在构建的 wordpress 插件中的 dbDelta() 函数在 mySQL 数据库中的自定义表上创建触发器! 在插件激活时,会创建表并使用默认数据填充。执行此函数时:

function PDFsem_initial_trigger($ldd_tabela) {
    global $wpdb;
    $table_name = $wpdb->prefix.$ldd_tabela;

    //it works!!!
            $sql = "CREATE TRIGGER brisIspod BEFORE DELETE ON ".$table_name." FOR EACH ROW INSERT INTO wp_ldd_usluga (usluga_naziv,usluga_rbr,seminar_id) VALUES('NEW TRIGGERED DATA', 2, 2)";
/*
    //dont work!!!
            $sql = "CREATE TRIGGER brisIspod BEFORE DELETE ON wp_ldd_seminar FOR EACH ROW DELETE FROM wp_ldd_usluga WHERE wp_ldd_usluga.seminar_id = old.id_seminar;";
*/
            dbDelta( $sql );
    }

函数在 BEFORE DELETE ... INSERT INTO... 上创建触发器,但不会在 BEFORE DELETE ... DELETE... 上创建触发器。如果在 phpMysqlAdmin 控制台直接执行 sql 查询,则定期创建触发器。 我没有同时创建两个触发器,所以一个正在评论中。第一个触发器只是测试样本。 是否可以在 wordpress mySql db 中使用 dbDelta() 添加我想要的触发器?

【问题讨论】:

    标签: php mysql wordpress triggers


    【解决方案1】:

    mySql 中的触发器可以使用:

    $sql = "在删除 wp_ldd_seminar 之前创建触发器 brisIspod,以便从 wp_ldd_usluga 中删除每一行,其中 wp_ldd_usluga.seminar_id = old.id_seminar;";

    $wpdb->查询($sql);

    【讨论】:

      猜你喜欢
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 2015-03-01
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 2021-07-22
      相关资源
      最近更新 更多