我有这个问题:
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.我怎么写这个,有什么建议吗?
答案 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();