-- A replicated seat has several holders on record (novox/hq ADR 0223). -- -- 0039 recorded one holder per seat, keyed by the seat: a handover replaced the row, so the seat was -- never without a holder in between. The mesh's resolver is now held on more than one machine, each -- answering the same names, and each of those holders is recorded — added by `seat --add`, -- never by being assigned. So a holding is keyed by the seat and the assignment holding it. -- -- Nothing else changes. A handover (`seat --to`) still leaves exactly one row, replacing every -- holder in one transaction; whether a seat may have more than one is the seat's compiled definition, -- judged by the controller before a row is added, and a store holding two for any other seat is -- refused at resolution, naming the seat. Every existing row is one per seat, so it satisfies the new -- key as it stands. alter table seat_holding drop constraint seat_holding_pkey; alter table seat_holding add primary key (seat, node, module);