From: Mohammad s. <sh...@eb...> - 2004-05-17 13:54:10
|
Hi Angel, This mysql Gotchas page seems either not up-to-date with the latest MySQL or wrong to me! for instance in the discussion about AUTO_INCREMENT; first of all MySQL amnual explicitely says: "Note that if the user specifies NULL or 0 for the AUTO_INCREMENT column in an INSERT, InnoDB treats the row as if the value had not been specified and generates a new value for it." yet you see in mysql Gotchas page that writer has played around inserting 0 into autoincrement field, I mean why on earth would you want to put a 0 in the auto_increment field ? and yet the result is not what you get when you try it: This is exactly from the Gotchas page: <<<< The previous gotcha leads us to this interesting problem, which is possibly the proof that 1 equals 2: CREATE TABLE exmpl3 ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, val TEXT ) type=innodb; INSERT INTO exmpl3 VALUES(0, 'test'); INSERT INTO exmpl3 VALUES(1, 'test'); mysql> select * from exmpl3; +----+------+ | id | val | +----+------+ | 1 | test | | 2 | test | +----+------+ 2 rows in set (0.00 sec) Isn't this fun? Now let's get ambitious: >>>> BUT ITS NOT TRUE! after inserting the first statement MySQL turn 0 to 1 and insert (1,'test') into the table (As it explicitely mentioned in the MySQL Manual) and by trying the second insert statement this is what you get: INSERT INTO exmpl3 VALUES(1, 'test'); ERROR 1062: Duplicate entry '1' for key 1 and you never see such a result +----+------+ | id | val | +----+------+ | 1 | test | | 2 | test | +----+------+ 2 rows in set (0.00 sec) : This is exactly like not using SEQUENCE object in Oracle or PostgreSQL and inserting an existing Primary-key, so its kind of application fault not DBMS. MySQL behaviour as you see is exactly like PostgreSQL in this case and it prevents it. Cheers Mohammad Angel Pizarro wrote: > kaustubh shinde wrote: > >> Our main criteria is to have a tool with MySQL support > > > OK, this is probably not a topic for this discussion, but I am going > to bring this up anyway. > > MySQL has a lot of "gotchas". See : > http://sql-info.de/mysql/gotchas.html > > My personal favorite is that it does type checks on dates, but you can > still enter February 31st as a legal date. > > Unless you *absolutely* need to support MySQL I would look into > PostgreSQL as an alternative. Compare their list of gotchas: > http://sql-info.de/postgresql/postgres-gotchas.html > Much smaller, eh? > hasta luego > Angel > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: SourceForge.net Broadband > Sign-up now for SourceForge Broadband and get the fastest > 6.0/768 connection for only $19.95/mo for the first 3 months! > http://ads.osdn.com/?ad_id=2562&alloc_id=6184&op=click > _______________________________________________ > Mged-mage mailing list > Mge...@li... > https://lists.sourceforge.net/lists/listinfo/mged-mage > |