我想通过PHP将触发器应用于现有的表和列。 执行PHP代码时,不会引发错误,但不会创建触发器。MySQL查询适用于Phpmyadmin,但通过PHP应用时不适用?
我的PHP代码:
//file: migrations.php
// created_at column already defined in a previous migration
//...
$migrations[3]['message'] = "added created_at, updated_at columns on rate table";
$migrations[3]['created'] = "2015-09-05 08:28:00";
$migrations[3]['sql'] = "
DELIMITER |
CREATE TRIGGER rate_created_at BEFORE INSERT ON rate
FOR EACH ROW
BEGIN
SET NEW.created_at = CURRENT_TIMESTAMP;
END |
DELIMITER ;
";
// apply migration
foreach ($migrations as $key => $value) {
// run the migration SQL for the current iteration
$sth = $dbh->prepare($value['sql']);
$sth->execute();
}
继承人什么做工作
- 复制和粘贴触发创建SQL到phpMyAdmin的
- 摆脱
DELIMITER
和BEGIN
END
声明 的例如如果我减少SQL到
$migrations[3]['sql'] = "
CREATE TRIGGER rate_created_at BEFORE INSERT ON rate
FOR EACH ROW
SET NEW.created_at = CURRENT_TIMESTAMP;
";
它从PHP运行,问题是我不相信我可以运行多行语句,而不DELIMITER
和BEGIN
END
。
我试图
- 逃避使用不同的分隔符
分隔符
DELIMITER
和BEGIN
END
语句在SQL?
运行命令定界符作为单独的查询。例如'分隔符/创建/分隔符' –