【问题标题】:How add trigger to mysql Through Schema API如何通过Schema API向mysql添加触发器
【发布时间】:2011-07-15 03:22:46
【问题描述】:

通过 Schema API(文件夹 sites\all\modules\mymodule 中的文件 mymodule.install)。 在 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


    【解决方案1】:

    没有专门的 API。

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

    还请记住,触发器在不同数据库之间没有标准化。使用 hook_user() 来做这件事会是一个更好的主意(或者可能作为后备)。

    【讨论】:

    • 请详细说明db中的触发器和hook_user()之间的关系
    • 当将新记录插入 {users} 表时,您的触发器似乎正在执行某些操作。这样做的 Drupal Way (TM) 是实现 hook_user(), $op = 'insert'。这将在新用户插入数据库后调用,然后您可以更新您的 beep 表
    • 非常感谢。我已在 user.module 的第 326 行插入代码。 成功了 .db_query('INSERT INTO {beep} (uid) VALUES (%d)', $array['uid']);
    • 不要不要破解核心!创建一个模块并实现 hook_user()。例如,请参阅geeksandgod.com/tutorials/computers/cms/drupal/…
    • 非常感谢。我已在 user.module 的第 326 行插入代码。 它的工作 .db_query('INSERT INTO {beep} (uid) VALUES (%d)', $array['uid']);我有一个问题。 同时插入两条记录不成问题
    猜你喜欢
    • 1970-01-01
    • 2022-01-06
    • 2020-07-02
    • 2023-04-03
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多