This has probably been hashed numerous times already, but I can't find = it. I have a table (names) with the following structure: dep_id number(12) -- FK to main table line number(4) -- PK when combined with dep_id name varchar2(70) status varchar2(8) - can be either Current or Previous ...and other auditing fields. My question is, I need/want to have a check constraint (somehow), so = that for each dep_id, there is only one record with the status of 'Current'. There can (and are) many previous names, but there should only be one = name flagged as 'Current'. I was thinking about an unique index, but then discarded that, as each row is unique with dep_id||line, but I want duplicates of dep_id||<status=3D'Previous'> and only one dep_id||<status=3D'Current'>. I also thought about forcing the user/submitter to always make line=3D1 the 'Current', but that would = never work, they're 'scientists" and therefore are unrestrained by rules. I = then thought about adding a column for a sequence, but even with multiple current's for the same dep_id it would still be unique. Using the name doesn't always work either, as many sites in different areas use the = same name, like 'El Dorado Mine'. How can I enforce this at the table level, since right now we are still getting data updates from spreadsheets and other data sources? The = asktom site (http://asktom.oracle.com/pls/ask/f?p=3D4950:8:::::F4950_P8_DISPLAYID:124= 980 0833250) almost has a way using a function based index, but I can't see how that approach works in my situation. Thanks ------------------------------------------------------------ Bill Ferguson U.S. Geological Survey - Minerals Information Team PO Box 25046, MS-750 Denver, Colorado 80225 Voice (303)236-8747 ext. 321 Fax (303)236-4208 ~ Think on a grand scale, start to implement on a small scale ~ -- //www.freelists.org/webpage/oracle-l