检查condition-postgres后,为字段赋值

时间:2015-10-13 10:42:29

标签: postgresql

我有这个问题:

ALTER TABLE MERCHANTS ADD COLUMN merchant_image bytea,
                      ADD COLUMN merchant_logo bytea,
                      ADD COLUMN merchant_address VARCHAR(100),
                      ADD COLUMN merchant_phone VARCHAR(50),
                      ADD COLUMN order_type VARCHAR(15) CHECK(order_type IN ('TAKE_AWAY', 'HOME_DELIVERY','NO_ORDERING')),
                      ADD COLUMN open_until TIME,
                      ADD COLUMN order_until TIME

对于order_until我有条件,如果order_type是NO_ORDERING,它的默认值应该是0.我怎么写这个,有什么建议吗?

1 个答案:

答案 0 :(得分:0)

不幸的是,对于the documentation

,您无法使用DEFAULT语法执行此操作
  

该值是任何无变量表达式(子查询和   对当前表中其他列的交叉引用不是   允许的)。

您可以使用触发器,例如:

create or replace function merchants_insert_update_trigger ()
returns trigger language plpgsql as $$
begin
    if new.order_type = 'NO_ORDERING' then
        new.order_until:= '0:0:0'::time;
    end if;
    return new;
end $$;

create trigger merchants_insert_update_trigger
before insert or update on merchants
for each row execute procedure merchants_insert_update_trigger();