我有如下表唯一约束到特定的文本
create table order(
status text,
user_id int (FK to user table),
time time stamp with time zone
);
而下面的约束的状态
CONSTRAINT valid_status CHECK (status = ANY (ARRAY['requested'::text, 'accepted'::text, 'declined_by_manager'::text, 'declined_by_user'::text, 'finished_by_user'::text, 'canceled_by_system'::text, 'washing'::text, 'finished_by_manager'::text]))
我想要的是,有可能只有一个订单状态为“要求”并与用户的“n” 水木清华像Alter table order add constraint "only_one_order_per_user" UNIQUE(user_id, status = 'requested')
我真的newbee与Postgres的。在此先感谢
感谢响应,但状态不仅是请求可以完成,接受和开始,CONSTRAINT valid_status CHECK(status = ANY(ARRAY ['requested':: text,'accepted':: text,'declined_by_manager':: text,'declined_by_user':: text'' finished_by_user'::文本,‘canceled_by_system’::文本,‘洗’::文本,‘finished_by_manager’::文)) –
编辑我的回答对多个状态 – Mokadillion
你的情况,我将无法创建2个declined_by_user订单。我只需要一个状态为“请求”的订单,而第i个用户标识为1 –