| 
		
			| Table Definition and Data problem [message #370967] | Mon, 24 July 2000 18:38  |  
			| 
				
				
					| Suresh.N Messages: 41
 Registered: March 2000
 | Member |  |  |  
	| Hi, 
 I want to clarify about one doubt.
 
 I konw very well Oracle Records ie Data is Case sensitive.
 
 Like
 
 "suresh" and "SURESH" are differnent. right?
 
 I have one table called Test(Name Varcahr2(10));
 
 I have given the primary key .
 
 I have entered  two record like
 
 suresh and SURESH.
 
 Ok.
 
 I want to implement the Record are not case sensitive.
 
 If i insert record like 'suresh' first it should not to allow to enter 'SURESH'.
 
 I don not want to user Upper case or Lower case functions.
 
 Is there any possible to do like this ?
 
 Can u suggest me.
 
 Thanks
 Suresh.N
 |  
	|  |  | 
	| 
		
			| Re: Table Definition and Data problem [message #370968 is a reply to message #370967] | Wed, 26 July 2000 04:23   |  
			| 
				
				
					| Geoff Devall Messages: 1
 Registered: July 2000
 | Junior Member |  |  |  
	| I believe the best way is to store the data twice.  Once with the name you want to use, like Suresh and a second column which stores only the upper case value "SURESH". 
 The primary key is included on the second column.  This will work but is not to efficient - someone may know something I don't, but this is the way I have seen this implemented in the past
 
 Geoff Devall
 |  
	|  |  | 
	| 
		
			| Re: Table Definition and Data problem [message #370976 is a reply to message #370967] | Thu, 27 July 2000 16:37  |  
			| 
				
				
					| Andrew again... Messages: 270
 Registered: July 2000
 | Senior Member |  |  |  
	| Create an "Insert or Update" trigger on the table. something like the following:
 
 CREATE OR REPLACE TRIGGER mytab_ins_upd
 BEFORE INSERT
 ON mytab
 FOR EACH ROW
 DECLARE
 number_row   INTEGER;
 found_ok     BOOLEAN;
 
 CURSOR c1 (
 v_col_name   IN   CHAR
 )
 IS
 SELECT 1
 FROM mytab
 WHERE UPPER (col_name) = UPPER (v_col_name)
 FOR UPDATE;
 BEGIN
 --++++++++++++++++++++++++++++++++++++++++++++++++
 -- Check to see if name of any case mix if found
 --++++++++++++++++++++++++++++++++++++++++++++++++
 OPEN c1 (:NEW.col_name);
 FETCH c1 INTO number_row;
 found_name := c1%FOUND;
 CLOSE c1;
 
 IF found_name
 THEN
 RAISE_APPLICATION_ERROR (-20501, 'Name already found in my_tab', TRUE);
 END IF;
 END;
 /
 
 For the update case, you would need to exclude the current row you are updating from getting found by the cursor. e.g.
 "and name != :new.name" or refer to the row by rowid would be better.
 |  
	|  |  |