-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Friday 28 May 2004 02:57 am, Martijn Tonies wrote: > Hi, > > ok - I've checked. > > > > > Why not? What's wrong with this: > > > > > > > > BORROWER > > > > BorrowerID > > > > > > > > BOOKS > > > > BookID > > > > BorrowerID (nullable) > > > > > > > > FK from Books.BorrowerID to Borrower.BorrowerID > > > > > > > > I haven't checked, but this _should_ be possible. > > > > > > > > With regards, > > > > > > Its a foreign key, you can not null foreign keys.. Thats the problem. > > That's not true. Here's what I got: > > CREATE TABLE inno1 ( > PK_Col Integer NOT NULL DEFAULT 0, > Child_Col Integer, > PRIMARY KEY ( > PK_Col > ) > ) TYPE=InnoDB ROW_FORMAT=fixed DEFAULT; > > CREATE INDEX I_Inno1_ChildCol > ON inno1(Child_Col); > > ALTER TABLE inno1 ADD FOREIGN KEY (Child_Col) > REFERENCES inno1 (PK_Col) > ON DELETE NO ACTION > ON UPDATE NO ACTION; > > > After that, I inserted data: > INSERT INTO inno1(PK_Col, Child_Col) VALUES (1, NULL); > INSERT INTO inno1(PK_Col, Child_Col) VALUES (2, NULL); > INSERT INTO inno1(PK_Col, Child_Col) VALUES (3, 1); > > > Now, can someone explain what the problem with NULLable FKs is? > > With regards, > > Martijn Tonies > Database Workbench - developer tool for InterBase, Firebird, MySQL & MS SQL > Server. > Upscene Productions > http://www.upscene.com
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 ; ALTER TABLE inno3 ADD FOREIGN KEY (Pk_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); select * from inno2; The actual way he was doing it was above.. I am going to have look into this more since as you can see, this worked and considering I do not have a id 2 or 3.. it should have failed.. so something isn't right.. The entire point behind foreign keys is for constraints.. Its been awhile since I have done foreign keys on mysql... - -- Enough research will tend to support your theory. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAt1Ruld4MRA3gEwYRAvWEAKCcCqIsKLIPZk3od7Vn8z3rA9zAbACfZYhL 4VQLUYacl2HR9rmaBZC/pvw= =yiUm -----END PGP SIGNATURE----- -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]