Article View: pl.comp.bazy-danych
Article #183487Re: Zapytanie... MySQL / InnoDB / wewnetrzny FOREIGN KEY
From: Krzysztof Jamróz
Date: Tue, 14 Jul 2009 19:16
Date: Tue, 14 Jul 2009 19:16
47 lines
2884 bytes
2884 bytes
Dnia Tue, 14 Jul 2009 03:32:15 -0700 (PDT), beherit napisał(a): > Mam problem z tabelką... > > CREATE TABLE `objects` ( > `objectId` int(10) unsigned NOT NULL, > [...ciach-smieci...] > `objectParentId` int(10) unsigned DEFAULT NULL, > PRIMARY KEY (`objectId`), > KEY `objectParentId` (`objectParentId`) > ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci > ROW_FORMAT=COMPACT; > i takim ograniczeniem: > ALTER TABLE `objects` > ADD CONSTRAINT `objectsParentId_to_objectId` FOREIGN KEY > (`objectParentId`) REFERENCES `objects` (`objectId`) ON DELETE SET > NULL ON UPDATE CASCADE; > > Często rzeczy SZBD robię na zewnątrz w swojej aplikacji, ale teraz > chcę jak najwięcej wrzucić do SZBD i na moją logikę przy aktualizacji > objectId odwołania w objectParentId powinny się aktualizować... ale > pojawia się problem: > Dla polecenia: > UPDATE `teleitcms`.`objects` SET `objectId` = '22' WHERE > `objects`.`objectId` =1 LIMIT 1; > dostaję: > #1451 - Cannot delete or update a parent row: a foreign key constraint > fails (`teleitcms`.`objects`, CONSTRAINT `objectsParentId_to_objectId` > FOREIGN KEY (`objectParentId`) REFERENCES `objects` (`objectId`) ON > DELETE SET NULL ON UPDATE CASCADE) > > A może mam gdzieś błąd? Dokumentacja MySQL'a mówi tak: 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. (http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html) A ja jeszcze zadam pytanie: po co chcesz aktualizować klucz główny? -- Krzysztof Jamróz
Technical Details
Message-ID:
<adxjqolf8q9i$.13nnurqrfcanz$.dlg@40tude.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mailReferences:
<613c8429-88eb-4ee7-8b7f-25adbc166913@o13g2000vbl.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail From: Krzysztof Jamróz <SpAMkrzyh000JeST@ZLYo2.pl> Newsgroups: pl.comp.bazy-danych Subject: Re: Zapytanie... MySQL / InnoDB / wewnetrzny FOREIGN KEY Date: Tue, 14 Jul 2009 21:16:13 +0200 Organization: TP - http://www.tp.pl/ Lines: 47 Message-ID: <adxjqolf8q9i$.13nnurqrfcanz$.dlg@40tude.net> References: <613c8429-88eb-4ee7-8b7f-25adbc166913@o13g2000vbl.googlegroups.com> NNTP-Posting-Host: cls217.neoplus.adsl.tpnet.pl Mime-Version: 1.0 X-Trace: nemesis.news.neostrada.pl 1247599563 8838 83.31.120.217 (14 Jul 2009 19:26:03 GMT) X-Complaints-To: usenet@news.neostrada.pl NNTP-Posting-Date: Tue, 14 Jul 2009 19:26:03 +0000 (UTC) User-Agent: 40tude_Dialog/2.0.15.1pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit