0

我有以下问题,例如我有一个下表:

CREATE TABLE "regions" (gid serial PRIMARY KEY,
"__gid" int8,
"name" varchar(20),
"language" varchar(7),
"population" int8);

我想插入一些记录,比如“name”的值之一是 - 'B',我需要编写什么样的代码才能将“B”更改为“English-Speaking”?这是通过某种触发器完成的吗?那么我是否必须编写一个触发器来在插入时自动更改值?任何帮助都非常感谢!!!

4

2 回答 2

1

这是一个UPDATE 语句,它会做你想做的事,在这种情况下:

UPDATE regions set name = 'English-Speaking' where name = 'B';

要将其放入函数中,请使用以下内容:

CREATE OR REPLACE FUNCTION  insert_into_wgs()
RETURNS void AS
$$
BEGIN
UPDATE regions SET name = 'English-Speaking' WHERE name = 'B';
END
$$
LANGUAGE 'pgpsql';

然后你创建一个触发器来运行这个函数:

CREATE TRIGGER log_update
    AFTER UPDATE ON accounts
    FOR EACH ROW
    WHEN (OLD.* IS DISTINCT FROM NEW.*)
    EXECUTE PROCEDURE
    insert_into_wgs();
于 2013-05-10T03:59:15.493 回答
0

假设我已经从您的描述中猜对了您的意思:

您将需要一个简单的BEFORE INSERT OR UPDATE ... FOR EACH ROW EXECUTE触发器来调用 PL/PgSQL 触发器过程,该过程更改NEW记录的值,然后执行RETURN NEW.

该文档包含丰富的细节,由于这是家庭作业,我不会提供完整的示例。从PL/pgSQL 触发器过程CREATE TRIGGER开始。

于 2013-05-10T04:11:03.620 回答