gpt4 book ai didi

sql - 尝试运行此 SQL 脚本时出现以下错误 : null,

转载 作者:行者123 更新时间:2023-11-29 12:56:59 25 4
gpt4 key购买 nike

在新的 Scala Play-Slick 项目上运行 activator run 时,我收到来自 Play Evolutions 的上述错误。我使用的是 Postgres 服务器版本 9.3 和最新的 JDBC 驱动程序 9.4。我的 1.sql 文件如下所示:

# schema

# --- !Ups

CREATE TABLE country (
id BIGINT,
name VARCHAR(100),
iso2 CHAR(2),
modified TIMESTAMP DEFAULT now(),
PRIMARY KEY (id)
);

CREATE OR REPLACE FUNCTION update_modified()
RETURNS TRIGGER AS $$
BEGIN
NEW.modified = now();
RETURN NEW;
END;
$$ language 'plpgsql';

CREATE TRIGGER trigger_country_modified BEFORE UPDATE ON country FOR EACH ROW EXECUTE PROCEDURE update_modified();

# --- !Downs

DROP TABLE country CASCADE;

DROP FUNCTION update_modified_column;

通过反复试验,我发现 Evolutions 不能很好地理解本地 Postgres 触发器函数 update_modified。我该如何解决或规避这个问题?

最佳答案

Play evolution 插件将您的 .sql 文件拆分为一系列以分号分隔的语句,然后再对数据库逐个执行。

当您在函数 update_modified() 代码中使用分号时,您必须通过输入两次 ;; 来转义它。见下文:

CREATE OR REPLACE FUNCTION update_modified()
RETURNS TRIGGER AS $$
BEGIN
NEW.modified = now();;
RETURN NEW;;
END;;
$$ language 'plpgsql';

关于sql - 尝试运行此 SQL 脚本时出现以下错误 : null,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40703913/

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