Using UNIQUE constraints instead of PRIMARY KEY for id columns in PostgreSQL is a common mistake with real consequences. Primary keys enforce non-nullability, auto-create indexes, support logical replication as the default replica identity, and enable referential integrity via foreign keys. Unique constraints allow NULL values (since Postgres treats NULLs as unique), require manual replica identity configuration for logical replication, and can produce ambiguous query results. While UNIQUE + NOT NULL mimics some primary key behavior, it adds unnecessary complexity. The recommendation is simple: always use PRIMARY KEY for id columns.