gpt4 book ai didi

function - 在 CartoDB 中创建触发器和函数

转载 作者:行者123 更新时间:2023-11-29 13:02:28 24 4
gpt4 key购买 nike

我正在尝试在使用 PostgreSQL 的 CartoDB 中创建触发器和函数。我希望每次在我的表 obs 上发生 INSERT INTO 时触发我的触发器。我希望我的函数更新另外两个表 inlandcoastal 中的值。到目前为止,我已经尝试过这段代码:

CREATE FUNCTION inlanddisp()  
RETURNS trigger AS $$
BEGIN
UPDATE inland SET lt_dispatch_level = obs.named_lt_dispatch_level
FROM obs
WHERE obs.created_at = (SELECT MAX(created_at) FROM obs)
AND inland.cartodb_id = 1
END;
$$

CREATE TRIGGER update_inland  
AFTER INSERT INTO obs
ON inland
FOR EACH ROW
EXECUTE PROCEDURE inlanddisp();

如何设置我的功能和触发器,以便它们正常工作?我在“CREATE”处或附近遇到语法错误。

最佳答案

您缺少函数中使用的语言以及结束分号。至于你的触发器,你只需要指定事件发生在哪个表。您的函数将包含需要发生的操作,因此在本例中更新您的其他两个表。

试试这个:

CREATE FUNCTION inlanddisp()
RETURNS trigger AS $$

BEGIN

UPDATE inland SET lt_dispatch_level = obs.named_lt_dispatch_level
FROM obs
WHERE obs.created_at = (SELECT MAX(created_at) FROM obs)
AND inland.cartodb_id = 1;

(put your other query to update coastal here)

RETURN null;

END;
$$ LANGUAGE plpgsql;


CREATE TRIGGER update_inland
AFTER INSERT
ON obs
FOR EACH ROW
EXECUTE PROCEDURE inlanddisp();

引用这个Trigger Procedure作为指南。

关于function - 在 CartoDB 中创建触发器和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25372592/

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