![](/img/trans.png)
[英]INSERT SQL statement inside a SELECT SQL statement in PostgreSQL
[英]SQL postgresql insert statement
我有一个以下问题,例如,我有一个下表:
CREATE TABLE "regions" (gid serial PRIMARY KEY,
"__gid" int8,
"name" varchar(20),
"language" varchar(7),
"population" int8);
我想插入一些记录,说“名称”的值之一是-“ B”,我必须编写哪种代码才能将“ B”更改为“英语”? 这是用某种触发器完成的吗? 因此,我是否必须编写触发器以在插入时自动更改值? 任何帮助极大的应用!
这是一条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();
假设我已经从描述中正确猜出了您的意思:
您将需要一个简单的BEFORE INSERT OR UPDATE ... FOR EACH ROW EXECUTE
触发器来调用PL / PgSQL触发器过程,该过程将更改NEW
记录的值,然后执行RETURN NEW
。
该文档包含大量细节,由于这是家庭作业,因此我将不提供完整示例。 从CREATE TRIGGER
和PL / pgSQL触发过程开始 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.