Unique index/primary key case-insensitive?

2002-02-15 Thread Andreas Frøsting

Hi there,

I'm having som difficulties trying to figure out MySQL's unique indexes
and primary keys.

Case:
mysql create table flaf (lala varchar(20) not null, unique(lala));
  Query OK, 0 rows affected (0.00 sec)

mysql insert into flaf VALUES ('hest');
  Query OK, 1 row affected (0.00 sec)

mysql insert into flaf VALUES ('Hest');
  ERROR 1062: Duplicate entry 'Hest' for key 1

Here, the unique index sees Hest as hest, and because of that the
second row is not inserted.

Why does MySQL have this strange behavoir, treating unique indexes
case-insensitive?
Same thing happens if I use a primary key for the column 'lala'.

Similar test in postgresql seems more logical to me:
hroi=# create table flaf(gnyf char(4) unique); 
  NOTICE:  CREATE TABLE/UNIQUE will create implicit index
'flaf_gnyf_key' for table 'flaf' 
  CREATE 

hroi=# insert into flaf values ('hest'); 
  INSERT 2722204 1 

hroi=# insert into flaf values ('hest'); 
  ERROR:  Cannot insert a duplicate key into unique index flaf_gnyf_key 

hroi=# insert into flaf values ('Hest'); 
  INSERT 2722206 1

Can anyone explain MySQL's behaviour and how I do a workaround making
unique indexes and primary keys case sensitive?
I've been over the documentation a couple times now unable to find
anything.

regards,

//andreas
http://phpwizard.dk


-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php




Re: Unique index/primary key case-insensitive?

2002-02-15 Thread Arjen Lentz

Hi Andreas,

On Sat, 2002-02-16 at 08:52, Andreas Frøsting wrote:
 Why does MySQL have this strange behavoir, treating unique indexes
 case-insensitive?
 Can anyone explain MySQL's behaviour and how I do a workaround making
 unique indexes and primary keys case sensitive?
 I've been over the documentation a couple times now unable to find
 anything.

It's a conceptual issue; what you are looking for is not directly
related to indexes. Rather, the case sensitivity of a column (and any
key taken from there) is dependent on the type of that column. If the
type is char, then any operation on that column will by default be
case-insensitive.

This is actually noted in the manual too, when you look at the sections
on CHAR and CREATE TABLE. If you want the column to be case-sensitive,
define the column as BINARY CHAR. In your CREATE/ALTER TABLE statement:
lala VARCHAR(20) BINARY NOT NULL.

That should solve your problem 100% !


Regards,
Arjen.

-- 
Get MySQL Training Worldwide, http://www.mysql.com/training/
   __  ___ ___   __
  /  |/  /_ __/ __/ __ \/ /Mr. Arjen G. Lentz [EMAIL PROTECTED]
 / /|_/ / // /\ \/ /_/ / /__   MySQL AB, Technical Writer, Trainer
/_/  /_/\_, /___/\___\_\___/   Brisbane, QLD Australia
   ___/   www.mysql.com


-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php




Unique/Index/Primary

2001-03-18 Thread Ryan Shrout

Could someone explain to me the difference between the Primary/Index/Unique attributes 
of MySQL?  I am coming from using MS SQL where there is only the Primary key option.

Sorry if this is too beginner of a question for this list.

Ryan Shrout
Athlonmb.com
Production Manager
http://www.athlonmb.com/
[EMAIL PROTECTED]





Re: Unique/Index/Primary

2001-03-18 Thread Jeremy D. Zawodny

On Sun, Mar 18, 2001 at 03:58:46PM -0500, Ryan Shrout wrote:

 Could someone explain to me the difference between the
 Primary/Index/Unique attributes of MySQL?  I am coming from using MS
 SQL where there is only the Primary key option.

And INDEXed column may have duplicate values in it. A UNIQUE one may
not.

A PRIMARY KEY is simply another way to say "UNIQUE" with the
side-effect that the PRIMARY KEY is stored first in the index file for
the table.

So UNIQUE is a special case of INDEX, and PRIMARY KEY is a special
case of UNIQUE.

Jeremy
-- 
Jeremy D. Zawodny, [EMAIL PROTECTED]
Technical Yahoo - Yahoo Finance
Desk: (408) 328-7878Fax: (408) 530-5454
Cell: (408) 439-9951

-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php