sql >> Database >  >> RDS >> Mysql

Hoe de beperking van de externe sleutel in verschillende databases te handhaven?

Ik kan geen manier bedenken om dit te doen met standaard MySQL.

Je zou een plug-in kunnen schrijven voor MySQL Proxy , dat de referentiële integriteit tussen de bovenliggende en onderliggende tabellen op verschillende servers beheert:

  • Onderschep INSERT en UPDATE tegen kindertafel. Query voor overeenkomende rij in bovenliggende tabel. Mislukt INSERT /UPDATE als er geen overeenkomst is gevonden in de bovenliggende tabel.

  • Onderschep DELETE tegen bovenliggende tafel. Vraag naar afhankelijke rijen in onderliggende tabel. Mislukt DELETE als er afhankelijke rijen zijn gevonden in de onderliggende tabel. Als de beperking bedoeld is om trapsgewijze gedrag te ondersteunen, doe dat dan in plaats van te falen.

  • Onderschep UPDATE tegen bovenliggende tafel. Als de waarde van de primaire sleutel verandert als onderdeel van de update, zoekt u naar afhankelijke rijen in de onderliggende tabel. Mislukt UPDATE als er afhankelijke rijen zijn gevonden in de onderliggende tabel. Als de beperking bedoeld is om trapsgewijze gedrag te ondersteunen, doe dat dan in plaats van te falen.

Houd er rekening mee dat u informatie over de referentiële integriteitsbeperkingen in uw MySQL Proxy-plug-in moet bewaren (of een aangepast configuratiebestand voor uw plug-in moet schrijven waarin de relaties worden vastgelegd). U kunt geen conventionele FOREIGN KEY . gebruiken syntaxis om dergelijke beperkingen in MySQL-instanties aan te geven.



  1. Kon de conversiefunctie van onbekend naar tekst niet vinden

  2. 10 handige tips voor het afstemmen van MySQL-prestaties

  3. Hoe NIET REGEXP werkt in MySQL

  4. Selecteer alleen gebruikers van de ene tafel, zo niet in een andere