我使用触发器更新记录。
我试过了
CREATE OR REPLACE FUNCTION fn_trg_sales2()
RETURNS trigger AS
$BODY$ declare
xNarr text='';
select name into xNarr from t1 where id =1;
update t2 set narration =E narration || case when narration ='' then xNarr else
'\n' || xNarr end where id=1
return null;
end;
$BODY$
以上程序显示错误。
如何使用变量在此更新查询中使用escape character
?
如何使用带变量的转义字符?不要使用转义字符建议输出变量。
使用 postgresql 9.1
修改
我从某个命令获取信息,所以我在触发器中更新如下
update t2 set narration =narration || case when narration ='' then xNarr else
quote_literal('\n') || xNarr end where id=1
现在它在表格中显示两行,但结尾并以'开头。
喜欢
narration
this is first'
'this is second
如何存储单个qutoation?
答案 0 :(得分:1)
如String Constants with C-style Escapes中所述,包含带有反斜杠的转义序列的字符串必须以E
开头,而E'line1\nline2'
或E'\n'
仅适用于换行符。
这个E
语法已经成为必需的,因为PostgreSQL 9.1的默认配置与standard_conforming_strings
相同,正如同一地点的文档所警告的那样:
如果配置参数standard_conforming_strings已关闭, 然后PostgreSQL识别常规和反斜杠转义 转义字符串常量。但是,从PostgreSQL 9.1开始,默认为 on,表示反斜杠转义仅在转义中被识别 字符串常量。
此行为更符合标准,但可能会中断 依赖历史行为的应用程序,反斜杠 逃避总是得到承认
quote_literal
函数用于在将SQL语句提供给SQL解释器之前以编程方式构建它们,这就是它的结果包含单引号的原因。此功能不是必需的,对您的用例没有帮助。