In Oracle 10g, how do I add a unique case-insensitive constraint on two varchar fields? For example, given the following records already in the table:
"Stephen", "Swensen"
"John", "Smith"
The following inserts would be invalid:
"stephen", "Swensen"
"John", "smith"
"stephen", "swensen"
But the following inserts would be valid:
"Stephen", "Smith"
"John", "Swensen"
I've managed to get it working by doing:
CREATE UNIQUE INDEX person_name_upper ON person(
UPPER(first_name), UPPER(last_name));
Assuming your table is called person, and the first and last name columns are called first_name and last_name, add this unique constraint:
ALTER TABLE person ADD CONSTRAINT person_name_unique
UNIQUE(LOWER(first_name),LOWER(last_name));
Let me know if I understood your question correctly and made the correct assumptions about your table layout.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With