我為更新觸發器撰寫了代碼。每當我更新時,如果“價格”為空白,我想用 1000 填充表“new_book”的“價格”列,如果“價格”不為空白,則 5% 的折扣。我的postsql代碼是
create function test()
returns trigger
as
$$
declare pr1 numeric ;
begin
case when old.price is null then pr1=1000
else pr1=pr1*0.95 end
end;
return new;
end
$$
language plpgsql;
但如果我運行這段代碼,PGAdmin 會顯示這樣的錯誤
ERROR: syntax error at or near "else"
LINE 8: else pr1=pr1*0.95 end
^
SQL state: 42601
Character: 117
我怎么解決這個問題?
uj5u.com熱心網友回復:
你想要一個IF宣告。如果要更改存盤在表中的值,則需要修改new記錄:
create function test()
returns trigger
as
$$
begin
if new.price is null then
new.new_book := 1000;
else
new.new_book := new.price * 0.95
end if;
return new;
end
$$
language plpgsql;
為了使分配實際持久化,您必須使用BEFORE觸發器:
create trigger set_new_book_trigger
before insert or update on the_table
for each row
execute procedure test();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/424880.html
標籤:PostgreSQL 功能 触发器 案件
