First, my apologies. I originally posted this to the mailing.databases.mysql newsgroup, not realizing that the newsgroup is just mirror of the mailing list.
I have since figured out the answer to my second question (I think) - see below. My answer is: The Primary Key specification creates an index that the foreign key uses. I STILL have my first question - see below: I have two questions about REFERENCES: 1. It appears that mySQL treats REFERENCES associated with an attribute differently than FOREIGN KEY (<blah>) REFERENCES... Specifically, the first form does not appear to work, while the later does. Here's a simple example (slightly edited): mysql> CREATE TABLE person (id char(5) primary key); Query OK, 0 rows affected (0.04 sec) mysql> CREATE TABLE phone (id char(5) not null REFERENCES person(id), num char(10) not null, PRIMARY KEY (id, num)); Query OK, 0 rows affected (0.06 sec) mysql> show create table phone; | phone | CREATE TABLE `phone` ( `id` char(5) NOT NULL default '', `num` char(10) NOT NULL default '', PRIMARY KEY (`id`,`num`) ) TYPE=InnoDB CHARSET=latin1 | 1 row in set (0.00 sec) mysql> insert into phone value ('foo', 'bar'); Query OK, 1 row affected (0.04 sec) It appears that the constraint is not created and is certainly not enforced. Now consider what should be the same phone table. mysql> drop table phone; Query OK, 0 rows affected (0.29 sec) mysql> CREATE TABLE phone (id char(5) not null, num char(10) not null, PRIMARY KEY (id, num), FOREIGN KEY (id) REFERENCES person(id)); Query OK, 0 rows affected (0.09 sec) mysql> show create table phone; | Table | Create Table | phone | CREATE TABLE `phone` ( `id` char(5) NOT NULL default '', `num` char(10) NOT NULL default '', PRIMARY KEY (`id`,`num`), FOREIGN KEY (`id`) REFERENCES `person` (`id`) ) TYPE=InnoDB CHARSET=latin1 | 1 row in set (0.00 sec) mysql> insert into phone values ('foo', 'bar'); ERROR 1216: Cannot add or update a child row: a foreign key constraint fails Why are these different? 2. In the manual (and in several posts), it clearly states (see Section 7.5.4.2 of the 4.1.0-alpha manual) "Both tables have to be InnoDB type and there must be an index where the foreign key and the referenced key are listed as the FIRST columns" However, I did not create an indicies, but it worked. What's up? Thanks in advance __________________________________ Do you Yahoo!? The New Yahoo! Shopping - with improved product search http://shopping.yahoo.com -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]