php - 插入后创建触发器Mysql问题

标签 php mysql codeigniter

当我尝试通过 codeigniter 添加 mysql 触发器查询时遇到问题 $this->db->query();但它显示语法错误。下面是代码:

  $this->db->query("DELIMITER $$ 
        CREATE TRIGGER `after_stuload_insert_info_data` AFTER INSERT 
        ON `{$this->tables->hesa_stuload_student_info}`
         FOR EACH ROW BEGIN 
          INSERT INTO `{$this->tables->hesa_student_reportperiod}` (hesa_course_relation_instance_id, student_data_id)
           VALUES (new.hesa_course_relation_instance_id, new.student_data_id); 
         END$$  
         DELIMITER ; ");

你能告诉我这段代码有什么问题吗?提前致谢。检查下面的错误。

enter image description here

最佳答案

DELIMITER 是一个针对具有查找分号的解析器的客户端的指令。使用脚本,你根本不用这个。您也不会将 $$ 放在末尾。

就是这样:

$this->db->query("CREATE TRIGGER
... the rest of the trigger ...
END");

此外,如果您使用变量作为表名称(危险信号!为什么要从 Web 代码创建触发器?),您可能还应该动态生成触发器名称。触发器名称在架构中必须是唯一的。

关于php - 插入后创建触发器Mysql问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38776992/

相关文章:

php - 注销后保存用户首选项变量

php - MySQL如何防止主键重复

php - 从 mysql 中的两个表在 php 中创建一个列表

php - Phalcon 模型更新不起作用

php - 在主机服务器上加载并重新启动服务器

PHP MYSQL。如何根据另一个表中的2个不同ID从一个表中检索相同的数据

php - Codeigniter 和 Gallery 的 Rest

javascript - 在 jquery codeigniter 中上传图像后进行编辑

php - 如何通过 Yii 中的配置禁用缓存?

java - 如何使我的库、模块或 jar 文件在 diff 项目之间保持同步