Sql 在插入之前,如何更改触发器函数中复合类型列的值?
我有一个包含以下列的表:Sql 在插入之前,如何更改触发器函数中复合类型列的值?,sql,postgresql,Sql,Postgresql,我有一个包含以下列的表: inspireId类型:inspireId(复合类型) gid类型:整数(主键) inspireId列类型如下所示: CREATE TYPE inspireId AS ( nameSpace text, local_id integer ) CREATE OR REPLACE FUNCTION script.addLocalId() RETURNS TRIGGER AS $$ BEGIN NEW."inspireId".local_id
CREATE TYPE inspireId AS (
nameSpace text,
local_id integer
)
CREATE OR REPLACE FUNCTION script.addLocalId() RETURNS TRIGGER AS
$$
BEGIN
NEW."inspireId".local_id := NEW.gid;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
在表中创建新行时,我想用gid的值自动填充local_id
我尝试了以下方法:
CREATE TYPE inspireId AS (
nameSpace text,
local_id integer
)
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»不是已知变量
正确的语法是什么?您不能直接访问type元素
CREATE OR REPLACE FUNCTION script.addLocalId() RETURNS TRIGGER AS
$$
BEGIN
NEW."inspireId" = ((NEW.inspireId).nameSpace, NEW.gid)::inspireId;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
可能重复的