gpt4 book ai didi

php - Laravel 在触发器 PostgreSQL 的 BEGIN 附近迁移错误

转载 作者:可可西里 更新时间:2023-11-01 07:38:35 24 4
gpt4 key购买 nike

我在 mysql 中创建了数据库触发器,在 laravel 中它工作正常,但是当我移动到 postgresql 时,我收到错误:

SQLSTATE[42601]: Syntax error: 7 ERROR:  syntax error at or near "BEGIN"

(顺便说一句,我是 postgresql 新手)

这是我在迁移中所做的代码:

DB::unprepared('CREATE TRIGGER histories_insert AFTER INSERT ON packets FOR EACH ROW
BEGIN
IF new.status = "pending" THEN
insert into `histories` (`packet_id`, `message`, `created_at`, `updated_at`) VALUES (new.id, "Barang berhasil di buat", now(), now());
END IF;
END');

我真的很困惑。希望有人能帮助我:)

最佳答案

mysql 和 postgre 的语法和结构不同,在 Postgres 中我们必须先编写触发器函数(过程),然后在触发器主体中调用它

所以之后

FORE EACH ROW

应该有一个

when event __type_of_event__

然后我们调用触发函数

execute procedure __procedure_name__

查看有关触发器的文档 here

和触发程序here

注意 when event 是可选的,你在过程中的字段名称应该更改为纯文本,或者用双引号引起来(如果它与大写字母混合)

不要担心文档的版本,postgresql 触发器在不同版本之间是一致的,希望这对您有所帮助!

关于php - Laravel 在触发器 PostgreSQL 的 BEGIN 附近迁移错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45212202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com