【发布时间】:2018-01-21 07:36:38
【问题描述】:
我在我的 PostgreSQL 环境中创建了以下触发器来阻止 0000-00-00 00:00:00 在我的 timestamp 数据类型字段中的插入,因为它是不支持。
create function my_trigger_func() returns trigger as $$
begin
if NEW.t_date = '0000-00-00 00:00:00' then
NEW.t_date := '0001-01-01 00:00:00';
end if;
return new;
end
$$ language plpgsql;
CREATE TRIGGER my_trigger
BEFORE INSERT ON timezone.test
FOR EACH ROW
EXECUTE PROCEDURE my_trigger_func()
以上触发器函数创建成功。但在那之后,当我执行以下插入命令时:
Insert into timezone.test (t_id,t_date) values ('3','0001-01-01 01:10:01');
我收到以下错误:
ERROR: date/time field value out of range: "0000-00-00 00:00:00"
LINE 1: SELECT NEW.t_date = '0000-00-00 00:00:00'
^
QUERY: SELECT NEW.t_date = '0000-00-00 00:00:00'
CONTEXT: PL/pgSQL function my_trigger_func() line 3 at IF
********** Error **********
ERROR: date/time field value out of range: "0000-00-00 00:00:00"
SQL state: 22008
Context: PL/pgSQL function my_trigger_func() line 3 at IF
请让我知道我哪里出错了。
【问题讨论】:
标签: postgresql triggers insert timestamp