2015-10-13 3 views
0

У меня есть этот запрос:Присвоить значение поля после проверки Состояние- Postgres

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

Это, вероятно, то, что вы ищете: http://stackoverflow.com/a/20234929/42580 – UlfR

ответ

0

К сожалению, вы не можете сделать это с помощью DEFAULT синтаксиса для the documentation:

Значение любой переменной свободное выражение (подзапросы и перекрестные ссылки на другие столбцы в текущей таблице, не разрешены) ,

Вы можете использовать триггер вместо этого, например .:

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(); 
Смежные вопросы