我有一个表格,其中包含以下列:
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»不是已知变量。
这个的正确语法是什么?
答案 0 :(得分:1)
您无法直接访问类型元素。
CREATE OR REPLACE FUNCTION script.addLocalId() RETURNS TRIGGER AS
$$
BEGIN
NEW."inspireId" = ((NEW.inspireId).nameSpace, NEW.gid)::inspireId;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
答案 1 :(得分:1)
CREATE OR REPLACE FUNCTION script.addLocalId() RETURNS TRIGGER AS
$$
BEGIN
SELECT (
'any value for nameSpace ',
NEW.gid
)::inspireId INTO NEW.inspireId;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;