- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 PostgreSQL 的新手,发现了一个触发器,除了一件小事外,它完全符合我的目的。触发器非常通用,跨不同的表运行并记录不同的字段更改。我找到了 here .
我现在需要做的是测试特定字段,该字段会随着触发触发器的表的变化而变化。我想到了使用 substr
因为所有列都将具有相同的名称格式,例如XXX_cust_no
但 XXX 可以更改为 2 或 4 个字符。我需要在 XXX_cust_no
字段中记录写入 history_/audit 表的每条记录的值。使用一堆 IF
/ELSE
语句来完成这个不是我想做的事情。
触发器现在可以记录 table_name
、column_name
、old_value
、new_value
。但是,我还需要记录已更改记录的 XXX_cust_no
。
最佳答案
基本上,您需要动态 SQL 来获取动态列名。 format
有助于格式化 DML 命令。使用 USING
子句从 NEW
和 OLD
传递值。
给定这些表:
CREATE TABLE tbl (
t_id serial PRIMARY KEY
,abc_cust_no text
);
CREATE TABLE log (
id int
,table_name text
,column_name text
,old_value text
,new_value text
);
它可以像这样工作:
CREATE OR REPLACE FUNCTION trg_demo()
RETURNS TRIGGER AS
$func$
BEGIN
EXECUTE format('
INSERT INTO log(id, table_name, column_name, old_value, new_value)
SELECT ($2).t_id
, $3
, $4
,($1).%1$I
,($2).%1$I', TG_ARGV[0])
USING OLD, NEW, TG_RELNAME, TG_ARGV[0];
RETURN NEW;
END
$func$ LANGUAGE plpgsql;
CREATE TRIGGER demo
BEFORE UPDATE ON tbl
FOR EACH ROW EXECUTE PROCEDURE trg_demo('abc_cust_no'); -- col name here.
dba.SE 上的相关回答:
List of special variables visible in plpgsql trigger functions in the manual.
关于postgresql - 从通用触发器中的不同列获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26354558/
这个问题在这里已经有了答案: final keyword in method parameters [duplicate] (9 个回答) 关闭 8 年前。 在此示例中,声明 Object fina
我的目标:是通过我的函数更新字段获取选定值并使用函数输出值运行它。 问题:当我从列表中选择值时,它不会触发函数,也不会更新字段。 感谢您的帮助。 HTML 12 14 16 18 20 22 24
我有一本具有这种形式的字典: myDict = {'foo': bar, 'foobar baz': qux} 现在,我想拆分字典键中的空格,使其成为下一个键并获取值(重复)。 myDictRev1
vector a; vector b; int temp_holder; cout > temp_holder) a.push_back(temp_holder); cout > temp_h
Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿。当然,我
我正在使用 jquery ui 日期选择器来获取 fromDate 和 toDate 以下是from日期的代码 $("#from_date").datepicker({
我是一名优秀的程序员,十分优秀!