Thanks Victoria for the pointer. I should have looked there first. Duh!
Now for the help... I tried:
ALTER TABLE rep_table ADD FOREIGN KEY (`rep_company_code`) REFERENCES
`company_table` (`company_code`) ON UPDATE CASCADE;
But get "ERROR 1216: Cannot add a child row: a foreign key constraint fails"
I'm running version: 3.23.56-Max on RedHat 8 via RPM.
I have data in both these tables, so dropping the tables and redoing schema
is really not a graceful option if I can help it.
Here are the two tables in their entirety. What have I done wrong?
And just to clarify, I want this to work such that a change of the
company_table.company_code will trigger the same change to the
rep_table.rep_company_code.
Ideally I'd also like it to be that if I change the
company_table.company_code, then any other company that has a
company_referal_code will change to the new company_code too... Does that
make sense? Is that possible to have a self referencing foreign key like
that? I thought I read that it isn't possible, but thought I'd ask.
CREATE TABLE company_table (
company_id mediumint(8) unsigned NOT NULL auto_increment,
company_timestamp timestamp(14) NOT NULL,
company_name varchar(255) NOT NULL default '',
company_code varchar(8) NOT NULL default '',
company_referal_code varchar(8) NOT NULL default '',
company_incept date NOT NULL default '0000-00-00',
company_phone varchar(20) NOT NULL default '',
company_fax varchar(20) NOT NULL default '',
company_url varchar(50) NOT NULL default '',
company_address1 varchar(70) NOT NULL default '',
company_address2 varchar(70) NOT NULL default '',
company_city varchar(50) NOT NULL default '',
company_state varchar(50) NOT NULL default '',
company_zip varchar(50) NOT NULL default '',
company_country varchar(50) NOT NULL default '',
company_type_table_id tinyint(3) unsigned default NULL,
company_type_level tinyint(3) unsigned default NULL,
company_registered enum('Y','N') default 'N',
company_notes longtext NOT NULL,
PRIMARY KEY (company_id),
KEY company_name (company_name),
KEY company_type_table_id (company_type_table_id),
KEY company_code (company_code)
) TYPE=InnoDB;
CREATE TABLE rep_table (
rep_id smallint(5) unsigned NOT NULL auto_increment,
rep_login varchar(15) NOT NULL default '',
rep_password varchar(15) NOT NULL default '',
rep_company_code varchar(8) NOT NULL default '',
rep_fname varchar(20) NOT NULL default '',
rep_lname varchar(20) NOT NULL default '',
rep_title varchar(50) NOT NULL default '',
rep_email varchar(50) NOT NULL default '',
rep_phone_office varchar(20) NOT NULL default '',
rep_phone_cell varchar(20) NOT NULL default '',
rep_address1 varchar(70) NOT NULL default '',
rep_address2 varchar(20) NOT NULL default '',
rep_city varchar(30) NOT NULL default '',
rep_state varchar(20) NOT NULL default '',
rep_zip varchar(20) NOT NULL default '',
rep_country varchar(30) NOT NULL default '',
rep_timestamp timestamp(14) NOT NULL,
rep_incept date NOT NULL default '0000-00-00',
rep_last_login date default '0000-00-00',
rep_admin enum('Y','N') NOT NULL default 'N',
rep_login_tally int(10) unsigned NOT NULL default '0',
rep_limit smallint(5) unsigned NOT NULL default '20',
rep_certified enum('Y','N') default 'N',
rep_notes longtext NOT NULL,
PRIMARY KEY (rep_id),
UNIQUE KEY rep_login (rep_login),
KEY rep_logpass (rep_login,rep_password),
KEY rep_company_code (rep_company_code)
) TYPE=InnoDB;
> -----Original Message-----
> From: Victoria Reznichenko [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, September 10, 2003 2:40 PM
> To: [EMAIL PROTECTED]
> Subject: Re: Foreign key update?
>
> Look at:
> http://www.mysql.com/doc/en/InnoDB_foreign_key_constraints.html
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]