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]

Reply via email to