not all types can be used as PK