【发布时间】:2012-12-18 07:36:49
【问题描述】:
`我有一个表(workers),它有一个 startdate 列(s_date),表示员工何时开始工作。所以我想创建一个触发器,如果它的工作时间少于一年(365 天),我会给出一个例外。但是代码有问题。有什么帮助_?
CREATE OR REPLACE FUNCTION control_func() RETURNS TRIGGER AS '
declare
int1 integer;
tt Date;
begin
select now()::date into tt;
select s_date from workers;
if(tt-s_date<365) then
RAISE EXCEPTION ''A message'';
end if;
RETURN NULL;
END;
' LANGUAGE 'plpgsql';
【问题讨论】:
-
如果有错误是什么?你不应该在 now() 和 a_date 上做一个
date_part吗? -
@bonCodigo:表达式
now()::date仅返回日期。使用 CURRENT_DATE 是一个更好的主意。 -
@Catcall:使用
current_date还可以避免投射时可能出现的time zone problems。 -
“代码有问题”。 始终显示您的 PostgreSQL 版本、代码和任何错误消息的完整文本。
标签: sql database postgresql