我有ERP应用程序,它在过帐交易时使用系统日期。数据库为PostgreSQL。我可以使用https://www.nirsoft.net/utils/run_as_date.html回溯应用程序,但我注意到事务仍然在“今天”发布,我认为这可能是因为PostgreSQL使用了系统日期。
有没有什么办法可以把PostgreSQL的日期设回原来的时间?或任何其他方法来做到这一点?ERP应用程序中的流程没有回溯日期的选项。
发布于 2018-03-16 07:12:26
最简单的方法是向数据库添加一个触发器,该触发器将更改插入行的日期:
create table testpast(
id serial primary key,
time timestamp with time zone not null default now()
);
insert into testpast (time) values (default);
select * from testpast;
id | time
----+-------------------------------
1 | 2018-03-16 00:09:20.219419+01
(1 row)
create function time_20_years_back() returns trigger as $$
begin
NEW.time = now()-'20 years'::interval;
return NEW;
end;
$$ language plpgsql;
create trigger testpast_time_20_years_back
before insert on testpast
for each row
execute procedure time_20_years_back();
insert into testpast (time) values (default);
select * from testpast;
id | time
----+-------------------------------
1 | 2018-03-16 00:09:20.219419+01
2 | 1998-03-16 00:09:55.741345+01
(2 rows)虽然我不知道这样的黑客攻击的目的是什么。
https://stackoverflow.com/questions/49309467
复制相似问题