Michael Stassen wrote:


Martijn Tonies wrote:

Hi Jeff,

<snip>
In this example, inno3.PK_Col references inno2.Child_Col, so the 2nd and 3rd statements are failing because they try to set inno3.PK_Col to values not present in inno2.Child_Col. The NULLs are irrelevant.


Michael

Perhaps this is what you meant?

CREATE TABLE inno2 (
  PK_Col    Integer NOT NULL DEFAULT 0,
  Child_Col Integer,
  PRIMARY KEY (PK_Col)
) TYPE=InnoDB ;

CREATE INDEX I_Inno2_ChildCol
 ON inno2(Child_Col);

CREATE TABLE inno3 (
  PK_Col    Integer NOT NULL DEFAULT 0,
  Child_Col Integer,
  PRIMARY KEY (PK_Col)
) TYPE=InnoDB ;

CREATE INDEX I_Inno3_ChildCol
 ON inno3(Child_Col);

ALTER TABLE inno3 ADD FOREIGN KEY (Child_Col)
  REFERENCES inno2 (Child_Col)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;

INSERT INTO inno2(PK_Col, Child_Col) VALUES (1, NULL);
INSERT INTO inno2(PK_Col, Child_Col) VALUES (2, NULL);
INSERT INTO inno2(PK_Col, Child_Col) VALUES (3, 1);

INSERT INTO inno3(PK_Col, Child_Col) VALUES (1, NULL);
INSERT INTO inno3(PK_Col, Child_Col) VALUES (2, NULL);
INSERT INTO inno3(PK_Col, Child_Col) VALUES (3, NULL);

mysql> SELECT * FROM inno3;
+--------+-----------+
| PK_Col | Child_Col |
+--------+-----------+
|      1 |      NULL |
|      2 |      NULL |
|      3 |      NULL |
+--------+-----------+
3 rows in set (0.05 sec)

Michael


-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]



Reply via email to