![](/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.