PostgreSQL触发条件

时间:2012-05-21 21:45:01

标签: java postgresql triggers mybatis

说,我在MyBatis映射器中有以下内容用于postgres表:

    <select id="selectValues" parameterType='int' resultType="SomeType">
        select foo from bar where baz=#{qux}
    </select>

可以从表中返回SomeType值的列表。但是我想在触发器的帮助下检查,如果返回的列表为空,如果是,则给它一个空值。它可能看起来像:

CREATE TRIGGER mytrigger AFTER select ON bar FOR EACH STATEMENT EXECUTE PROCEDURE trigger_after_select ();

CREATE FUNCTION trigger_after_select () RETURNS trigger AS ' 
BEGIN 
if (select count(*) from bar)=0
then return NULL; 
...

我想知道我是否朝着正确的方向前进,如果有人能够告诉触发器的其余部分是什么样子(如果开始看起来合适的话)。在建议中,建议会有所帮助。

1 个答案:

答案 0 :(得分:3)

没有&#34; SELECT&#34;在Postgres中触发。

如果您将SQL更改为:

select foo from bar where baz=#{qux}
union all
select null where not exists (select 1 from bar where baz=#{qux})
然后你会得到同样的效果。如果列baz没有具有该值的行,它将返回NULL值。

(免责声明:我不了解MyBatis,所以我不知道是否可以指定这样的陈述)