Thanks,
but I think the lik you provided won't help. I know how to create pk/fk
contraints, and do in our schema, when the foreign key is completely
specified. for example, if my original table was instead:

create table Example (
       id int not null auto_increment primary key,
       fk_id int not null
) type = InnoDB;

then I create an index in fk_id, and issue the alter table statement:
alter table Example add constraint foreign key (fk_id) references
Fk(id);

for an InnoDB table called Fk.

What I need to do is somehow put an "if" statement in there. If
table_name = 'TabA', then verify that TabA.id exists. If table_name =
'TabB', then verify that TabB.id exists. TabA and TabB, for the present
purposes, could simply be

create table TabA {
        id int not null auto_increment primary key
) type = InnoDB;

create table TabB {
        id int not null auto_increment primary key
) type = InnoDB;


Its as though I could do the following:

create table Example (
        id int not null auto_increment primary key,
        table_name enum('TabA','TabB') not null,
        table_id int not null
) type = InnoDB;
alter table Example add index (table_id);
alter table Example add constraint foreign key (table_id) references 
        (if table_name = 'TabA' then TabA(id) else TabB(id);

but I don't think this works.

jeff


Stefan Hinz wrote:
> 
> Jeff,
> 
> > I'm wondering if its somehow possible to create a pk/fk constraint for
> > the table below
> 
> > create table Example (
> >         id int not null auto_increment primary key,
> >         table_name enum('TabA','TabB') not null,
> >         table_id int not null
> > ) type = InnoDB;
> 
> > if table_name is 'TabA', then I want to make sure the row exists in
> > TabA. Likewise if table_name is 'TabB'
> 
> You can find the syntax for MySQL / InnoDB and a good example here:
> 
> http://www.mysql.com/doc/en/SEC463.html
> 
> To avoid trouble, consider this sentence from that page:
> 
> 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. InnoDB does not auto-create indexes on foreign keys or
> referenced keys: you have to create them explicitly.
> 
> The example on that page, however, shows exactly how you'd do that.
> 
> Regards,
> --
>   Stefan Hinz <[EMAIL PROTECTED]>
>   iConnect GmbH <http://iConnect.de>
>   Heesestr. 6, 12169 Berlin (Germany)
>   Telefon: +49 30 7970948-0  Fax: +49 30 7970948-3
> 
> [filter fodder: sql, mysql, query]
> 
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

-- 
Jeff Mathis, Ph.D.                      505-955-1434
The Prediction Company                  [EMAIL PROTECTED]
525 Camino de los Marquez, Ste 6        http://www.predict.com
Santa Fe, NM 87505

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

Reply via email to