我想通過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?
運行命令定界符作爲單獨的查詢。例如'分隔符/創建/分隔符' –