Hi Craig,
One possible direction to explore is to use the native database technology.
What you are describing is usually referred to as a Unique Constraint. Unique Constraints and Check Constraints
Most databases support this. A particular table's primary key is always under a unique constraint and many databases allow other columns to be configured with this unique constraint property.
A few caveats from having used these in the past.
1. When trying to apply the unique constraint to an existing table column the operation will fail if the data isn't already unique (i.e. if two rows already have duplicate values)
2. This low-level enforcement of uniqueness isn't always gracefully handled by client applications. A users is just as likely to get DB write error as they are to get a meaningful error message.
Check the documentation of the database you are using for unique constraint and you should find instructions.
Cam