我必须将数据从一个表(main_tbl)复制到另一个表(sub_tbl)
CREATE OR REPLACE FUNCTION auditlogfunc() RETURNS TRIGGER AS
$example_table$
DECLARE
temp text;
BEGIN
temp = 'SELECT device_id FROM company ORDER BY id DESC LIMIT 1';
INSERT INTO temp(emp_id, entry_date, name,age) VALUES(new.id,current_timestamp, new.name, new.age);
RETURN NEW;
END;
$example_table$ LANGUAGE plpgsql;
temp = 'SELECT device_id FROM company ORDER BY id DESC LIMIT 1';
这将从main_tbl中选择最后一个值并存储到temp变量中。
现在我想将数据从main_tbl复制到临时表..
错误:关系" temp"不存在
答案 0 :(得分:0)
请参阅here如何将查询结果存储在变量中。
请参阅here如何将字符串作为SQL命令执行。
在变量上使用quote_ident()
函数,然后将其作为标识符包含在SQL查询字符串中。这样就可以安全地禁止SQL注入。
答案 1 :(得分:0)
@a_horse_with_no_name已经指出了如何做到这一点。如果我理解正确,你已经创建了dv002表。
CREATE OR REPLACE FUNCTION auditlogfunc ()
RETURNS trigger AS
$body$
DECLARE
get_last_value integer;
your_table_name text := 'dv002';
BEGIN
SELECT id into get_last_value FROM tb_main_table ORDER BY id DESC LIMIT 1;
EXECUTE format('insert into %s(emp_id, entry_date, name,age) VALUES ($1,$2,$3,$4,$5)', your_table_name) using get_last_value,new.id,current_timestamp, new.name, new.age;
RETURN new;
$body$
LANGUAGE plpgsql;