Thanks, Larry. Very helpful.

I avoid R:Base RULEs completely, but, you're right, choice #2 is correct!


Regards,

Stephen Markson
The Pharmacy Examining Board of Canada
416.979.2431 x251

From: 'Lawrence Lustig' via RBASE-L [mailto:[email protected]]
Sent: May-06-16 10:51 AM
To: [email protected]
Subject: Re: [RBASE-L] - Unique or NULL

What is the best way to implement a column that can be null, but if not null, 
must be unique?


This cannot be accomplished through the standard SQL constraint mechanism.  
UNIQUE columns cannot be NULL.

You have two choices:

1. Use a RULE.  This is R:Base specific and not foolproof since RULEs can be 
turned ON or OFF.  This may be an advantage or a disadvantage in your 
situation.  This is probably the easiest solution (especially if the column 
already exists) as long as you're okay with running with RULES ON most of the 
time.

2. Move the unique-if-not-NULL column to a separate table, linked back to the 
main table by a PK/FK relationship.  Create a UNIQUE index on the column in the 
new table.  This uses only standard SQL features and, if properly setup, cannot 
be worked-around.  If there is additional data associated with the 
unique-if-not-NULL identifier (dates, scores, etc) then this is definitely the 
"correct" solution.

--
Larry
--
You received this message because you are subscribed to the Google Groups 
"RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 
[email protected]<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to