tbee's page
   home  work  myself  mixed  guestbook  
   
      INHALT MySQL Foreign Keys mit MySQL InnoDB Tabellen

Wer mir was gutes tun will kauft über diesen Link bei Amazon ein !

Foreign Keys mit MySQL InnoDB Tabellen

InnoDB Tabellen unterstützen seit Version 4.0 Foreign Keys.
Nun läst sich endlich auch in MySQl referentielle Integrität auf DB Ebene herstellen.
Allerdings erkauft man sich dies mit dem InnoDB Tabellen Typ dessen Performance deutlich unter den MyISAM Tabellen liegt!


Die Allgemeine Syntax lautet:
 
[CONSTRAINT symbol] FOREIGN KEY (index_col_name, ...)
                  REFERENCES table_name (index_col_name, ...)
                  [ON DELETE CASCADE | ON DELETE SET NULL]

Es gibt zwei Möglichkeiten Foreign Key Constrains einzusetzen.
Zum einem beim CREATE TABLE zum anderem beim ALTER TABLE
z.B:  

# CREATE
# PARENT TABLE
CREATE TABLE `autor` (
  `id` int(10)  NOT NULL ,
  `name` varchar(128) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `NAME` (`name`)
) TYPE=InnoDB;

# CHILD TABLE
CREATE TABLE `buch` (
  `id` int(10)  NOT NULL,
  `autor_id` int(10)  NOT NULL ,
  PRIMARY KEY  (`id`),
  INDEX idx_autor_id (autor_id),
  FOREIGN KEY (autor_id) REFERENCES autor(id) ON DELETE CASCADE 
) TYPE=InnoDB  

#ALTER
ALTER TABLE buch
ADD CONSTRAINT FK_Buch (autor_id) REFERENCES autor(id) ON DELETE CASCADE 
;
Es lassen sich folgende Verhalten beim löschen [ON DELETE] bzw. (seit 4.0.7) update [ON UPDATE] definieren.

  • CASCADE - alle damit verknüpften Datensätze werden gelöscht/upgedatet
  • SET NULL - alle damit verknüpften Datensätze werden auf NULL gesetzt
  • NO ACTION - es passiert nichts (Sinnvoll?)
  • RESTRICT So lange noch Datensätze vorhanden sind kann kein Parent Wert gelöscht/geändert werden
z.B.:
 
  ON DELETE SET NULL
  ON DELETE CASCADE

Entsprechend den Verhaltenseinstellungen müssen die Attribute (z.B. autor_id) entsprechende Datentypen/Eigenschaften haben (NOT NULL/NULL)

Weiter Möglichkeiten PHP & MySQL Transaktionen

 

Druckerversion     [valid html 4.01]      [english]
style: blauer Stylegelber Styleroter Stylegruener StyleStandard Style
© 2001 by  tbee / Impressum last update at: 01.01. 1970 01:01:00
url: www.tbee.de