我一直在其他线程上寻找解决这个问题的方法,但是我从其他主题中得到了一些我需要的东西,这些东西我无法结合在一起正确工作。
问题的背景是:每晚都会将事务日志写入数据库中新创建的表,然后清除主日志。创建的表的名称与日期无关(这使得搜索历史日志变得困难——因此无法猜测或硬编码给定日期的表名称)。
但是,一旦事务被移动到新表中,日志记录表就会添加一条新记录,该记录存储了日期和有关存档记录的其他信息(包括表的名称)。
我正在尝试编写一个函数,该函数允许我将日期范围(开始日期和结束日期)传递到其中,然后返回在给定日期范围内具有信息的所有表的名称-将名称存储在数组中。填充阵列后,将对阵列中的每个表运行SQL查询,以将所有这些写入单个临时表,从而允许对其进行查询。
一些伪代码可能是:
CREATE OR REPLACE FUNCTION transactions(begin_date varchar(10), end_date varchar(10)) RETURN void as $$
Begin
SELECT INTO table_names 'name' from 'log_table' where 'log_date' between begin_date and end_date;
FOREACH table_names LOOP
SQL_Query = "INSERT INTO temporary_table SELECT * from " + table_names;
EXECUTE SQL_Query;
END LOOP;
任何帮助都很感谢-我的逻辑可能会在这一点上完全崩溃,我需要改变我的方法。