Avatar billede jara06 Nybegynder
24. marts 2008 - 14:09 Der er 1 kommentar og
1 løsning

Omgå MySQL bug?

Sakset fra http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html :

Deviation from SQL standards: If ON UPDATE CASCADE or ON UPDATE SET NULL recurses to update the same table it has previously updated during the cascade, it acts like RESTRICT. This means that you cannot use self-referential ON UPDATE CASCADE  or ON UPDATE SET NULL operations. This is to prevent infinite loops resulting from cascaded updates. A self-referential ON DELETE SET NULL, on the other hand, is possible, as is a self-referential ON DELETE CASCADE. Cascading operations may not be nested more than 15 levels deep.

Når man i MySQL ikke kan bruge constraints til samme table, hvad kan man så gøre hvis man f.eks. vil lave én kategori-tabel som her:

CREATE TABLE `cat` (
  `id` int(11) auto_increment,
  `title` varchar(100),
  `description` text,
  `parent` int(11),
  PRIMARY KEY  (`id`),
  UNIQUE KEY `title` (`title`)
) ENGINE=InnoDB;

Kan man overhovedet omgå den bug fornuftigt?
Avatar billede pidgeot Nybegynder
25. marts 2008 - 10:42 #1
Der er da intet der forhindrer dig i at have en constraint til samme tabel - og det står der heller ikke noget om i den tekst du har kopieret ind.

Det du ikke kan er at lave cascading updates - men det vil heller ikke være nødvendigt når nu den kolonne du refererer til er auto_increment (den vil du jo aldrig ændre alligevel).
Avatar billede jara06 Nybegynder
08. april 2008 - 10:46 #2
Det lykkedes dog aldrig at løse problemet selvom det burde være lige til...

Lukker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester