PostgreSQL:条件唯一约束

vol*_*ron 8 postgresql

鉴于:

----------------------------------
      vin     | driver | is_owner
--------------+--------+----------
 231431cxzv87 | bob    | true
 231431cxzv87 | jeff   | false
 231431cxzv87 | greg   | false
 32342klj234s | jeff   | true
Run Code Online (Sandbox Code Playgroud)

有没有办法添加约束,以便每个vin只有一个所有者?


编辑:我发现了这个问题.
添加部分唯一索引是否适合此目的?

kwo*_*orr 13

是部分索引是您的选择.

create unique index unique__vin on table (vin) where is_owner;
Run Code Online (Sandbox Code Playgroud)

这里索引仅涵盖is_owner为true的行,并且这些行vin应该是唯一的.