Foreign Key Constraint

Foreign Key Constraint

am 25.07.2007 20:09:26 von Oliver Lehmann

Hallo,

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/

Re: Foreign Key Constraint

am 25.07.2007 23:10:27 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)