gpt4 book ai didi

sql - 如何在插入之前更改触发器函数内复合类型列的值?

转载 作者:行者123 更新时间:2023-11-29 13:20:50 25 4
gpt4 key购买 nike

我有一个包含以下列的表格:

  1. inspireId 类型:inspireid(复合类型)
  2. gid 类型:整数(主键)

inspireId 列类型如下:

CREATE TYPE inspireId AS (
nameSpace text,
local_id integer
)

我想在表中创建新行时自动用 gid 的值填充 local_id。

我尝试了以下方法:

CREATE OR REPLACE FUNCTION script.addLocalId() RETURNS TRIGGER AS
$$
BEGIN
NEW."inspireId".local_id := NEW.gid;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;

但这行不通。创建触发函数时抛出如下错误:

«new.inspireId.local_id» is not a known variable.

正确的语法是什么?

最佳答案

您不能直接访问类型元素。

CREATE OR REPLACE FUNCTION script.addLocalId() RETURNS TRIGGER AS
$$
BEGIN
NEW."inspireId" = ((NEW.inspireId).nameSpace, NEW.gid)::inspireId;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;

关于sql - 如何在插入之前更改触发器函数内复合类型列的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42073185/

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