我找到了一些postgresql触发器教程。有这个示例功能:
CREATE OR REPLACE FUNCTION add_log_trigg_function() RETURNS trigger AS
$BODY$
DECLARE
account_type varchar;
BEGIN
IF (TG_TABLE_NAME = 'account_current') THEN
account_type := 'Current';
RAISE NOTICE 'TRIGER called on %', TG_TABLE_NAME;
ELSIF (TG_TABLE_NAME = 'account_savings') THEN
account_type := 'Savings';
RAISE NOTICE 'TRIGER called on %', TG_TABLE_NAME;
END IF;
RETURN null;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION add_log_trigg_function()
OWNER TO postgres;
我知道$BODY$
开始身体功能。但为什么它应该命名?这个名字BODY
可以或者通常在其他地方使用吗?除了LANGUAGE
,COST
和ALTER FUNCTION
命令,还有什么其他命令通常留在$BODY$
之外?
https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING
美元引用的字符串常量由美元符号($),零个或多个字符的可选“标记”,另一个美元符号,构成字符串内容的任意字符序列,美元符号,相同的标记组成开始这个美元报价和一个美元符号。
简而言之 - 你可以放任何标签 - 不仅仅是qazxsw poi用于触发器或qazxsw poi用于qazxsw poi,因为psql通常会格式化它。样品:
BODY
也回答它应该被命名的任何东西 - 它不应该.jut function
和\sf
一样好,但是当你需要在引用中使用引用时,“命名”非常有用。就像在上面的示例中我使用单引号引用t=# do
$anything$
begin
raise info '%', 'any tag would work';
end;
$anything$
;
INFO: any tag would work
DO
,我不需要加倍单引号或逃避它们在体内使用,因为我已经使用美元符号引用。可能更清晰的样本是:
$$