0
我創建了一個觸發器來檢查值是否在指定的範圍之間。現在我想爲它遷移,但我收到以下錯誤:laravel使用遷移創建觸發器拋出錯誤或訪問衝突
[PDOException] SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'delimiter | DROP TRIGGER IF EXISTS header_range_limit | ' at line 1
我的移民看起來像
class HeaderRangeTrigger extends Migration
{
/**
* Create trigger. Checks if a value is > 100 or < 0, sets to 50 is so
*
* @return void
*/
public function up()
{
DB::unprepared('
delimiter |
DROP TRIGGER IF EXISTS header_range_limit |
CREATE TRIGGER header_range_limit BEFORE
UPDATE
ON
user_settings FOR EACH ROW BEGIN IF NEW.header_position < 0 OR NEW.header_position > 100 THEN
SET NEW.header_position = 50;
END IF;
END |
delimiter ;
');
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
DB::unprepared('DROP TRIGGER IF EXISTS header_range_limit');
}
}
我也嘗試過不同的分隔符,但具有相同的結果。
如果我複製&將代碼粘貼到phpmyadmin SQL編輯器中,它的工作原理沒有任何問題。我錯過了什麼?