Foreign Key Constraint
am 25.07.2007 20:09:26 von Oliver LehmannHallo,
ich habe unter anderem folgende 2 Tabellen:
CREATE TABLE `text` (
textid int(10) unsigned NOT NULL,
mla_languageid int(10) unsigned NOT NULL,
`text` varchar(255) NOT NULL,
`type` enum('t','m','e','g') NOT NULL,
PRIMARY KEY (textid,mla_languageid,`type`),
KEY mte_mla_pk (mla_languageid),
CONSTRAINT mte_mla_pk FOREIGN KEY (mla_languageid)
REFERENCES languages (languageid) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='mtx';
CREATE TABLE templates (
`name` varchar(50) NOT NULL,
mtx_textid int(10) unsigned NOT NULL,
PRIMARY KEY (`name`,mtx_textid),
KEY mtm_mtx_pk (mtx_textid),
CONSTRAINT mtm_mtx_pk FOREIGN KEY (mtx_textid)
REFERENCES `text` (textid) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='mtm';
Nun ist mir aufgefallen, das templates das feld textid in der Tabelle
text via Foreign Key Constraint prueft.
Nun ist aber der semantische Bezug zu der textid nur fuer Daten vom
Typ 't' - ich braeuchte also nur eine Ãberprüfung, auf die textid's
welche als typ 't' haben. Ist dies moeglich? Ich moechte die type-
Spalte nicht mit in die Tabelle templates uebernehmen (und nur zu diesem
Zweck immer mit t fuellen). Im Grunde braeuchte man ein Constraint mit
Where Bedingung. Glaube nicht das sowas geht. Gibt es trozdem
irgendwelche Wege?
--
Oliver Lehmann
http://www.pofo.de/
http://wishlist.ans-netz.de/