如何通过Schema API向mysql添加触发器

问题描述 投票:0回答:2

通过 Schema API(文件 mymodule.install 位于文件夹站点 ll\modules\mymodule 中)。 mysql 中的触发器:

delimiter |

    CREATE TRIGGER testref AFTER INSERT ON users
      FOR EACH ROW BEGIN
        INSERT INTO beep  SET uid = NEW.uid;
      END;
    |

    delimiter ;
drupal drupal-6 drupal-modules
2个回答
0
投票

没有专门的 API。

尝试http://api.drupal.org/api/drupal/includes--database.pgsql.inc/function/db_query/6

还请记住,不同数据库之间的触发器并未标准化。使用 hook_user() 来做到这一点将是一个更好的主意(或者可能作为后备)。


0
投票

确保在查询函数的选项参数中传递

['allow_delimiter_in_query' => true]
,如下所示:

$database = \Drupal::database();
    $database->query(
      "
      CREATE  TRIGGER log_queue_backup AFTER DELETE on queue
      FOR EACH ROW
      BEGIN
      IF (old.expire  > UNIX_TIMESTAMP() OR old.name LIKE 'drupal_batch%') THEN
                  INSERT INTO queue_backup (name,expire,created)
      VALUES ( old.name,old.expire,old.created );
            END IF;
      END#",[],['allow_delimiter_in_query' => true]
    );
© www.soinside.com 2019 - 2024. All rights reserved.