簡體   English   中英

SQL 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 TRIGGERPL / pgSQL觸發過程開始

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM