A primary key can be numeric OR text but it can't be empty (aka:
Null).
Nitpick:
Empty is not exactly the same as Null.
Empty could be a zero-length string (if that's allowed to be stored,
and, annoyingly, since A2003, allowing ZLS is the default for text
fields).
In a field that allows ZLS, Null could mean "nobody has even
bothered to decide what should be in this field -- it's completely
unknown" while the ZLS (empty) could mean "somebody checked this
record and stored a ZLS to show that there is no value for this
field."
One option to avoid the Null problem in a compound unique index is
simply to allow ZLS and set the default value to "".
But I'd never do that.
Of course, I'd also never use compound keys!
The point is that any field in a unique index has to have a default
value. Otherwise it could be Null and thus can't function as a
unique index.