Officielt har du ingen kontrol over rækkefølgen af de kaskadede operationer. Du kan muligvis misbruge nogle udokumenterede adfærd dog:
- for MySQL 5.5 udføres fremmednøglerne i den rækkefølge, de blev oprettet, så slip og genskabe
fk_category_org
-constraint burde virke - for MySQL 5.6+ udføres fremmednøglerne i den leksikalske rækkefølge efter deres navne, så omdøbning af
fk_category_org
til f.eks.fk_z_category_org
burde virke
Dette er udokumenteret og kan ændres når som helst (og kan blive påvirket af andre faktorer).
Når det er sagt, den rigtige måde at gøre dette på (og alt andet, der er for kompliceret til on cascade
) ville være at tilføje en before delete
-trigger
på din organisation
-tabel, der "manuelt" sletter brugerne først og derefter kategorierne bagefter. before delete
-triggere udføres før on cascade
(så du kan beslutte, om du vil beholde dem eller ej, selvom det sandsynligvis ville være vildledende).
Det er ikke helt klart, om det er din tilsigtede adfærd, men i øjeblikket kan en bruger have en kategori, der tilhører organisation 1, mens han er tildelt organisation 2. Sletning af organisation 1 ville da stadig mislykkes. Det ser lidt ud som om, at det er det, du vil forhindre med dit design, men hvis du ønsker, at sletningen også skal virke i dette tilfælde, skal du bruge for at bruge triggeren til at kunne inkorporere det (eller manuelt slette det i din applikation), vil cascading ikke fungere, medmindre du også kaskade i kategoritabellen.