sql >> Databasteknik >  >> RDS >> Mysql

Hur bibehåller man utländska nyckelbegränsningar i olika databaser?

Jag kan inte komma på något sätt att göra detta med standard MySQL.

Du kan skriva ett plugin för MySQL Proxy , som hanterar referensintegritet mellan överordnade och underordnade tabeller på olika servrar:

  • Snäpp upp INSERT och UPDATE mot barnbord. Fråga efter matchande rad i överordnad tabell. Misslyckas med INSERT /UPDATE om ingen matchning hittades i den överordnade tabellen.

  • Snäpp upp DELETE mot föräldratabell. Fråga efter beroende rader i underordnad tabell. Misslyckas DELETE om det finns några beroende rader i den underordnade tabellen. Om begränsningen är avsedd att stödja kaskadbeteende, gör det istället för att misslyckas.

  • Snäpp upp UPDATE mot föräldratabell. Om det primära nyckelvärdet ändras som en del av uppdateringen, fråga efter beroende rader som finns i den underordnade tabellen. Misslyckas UPDATE om det finns några beroende rader i den underordnade tabellen. Om begränsningen är avsedd att stödja kaskadbeteende, gör det istället för att misslyckas.

Observera att du måste behålla information om referensintegritetsbegränsningarna i ditt MySQL Proxy-plugin (eller skriva en anpassad konfigurationsfil för din plugin som registrerar relationerna). Du kan inte använda konventionell FOREIGN KEY syntax för att deklarera sådana begränsningar över MySQL-instanser.



  1. MySQLTest Fel vid försök att ansluta C# till MySql

  2. Postgres datum överlappande begränsning

  3. Bästa praxis för lös koppling mellan data och användargränssnitt i Android - Adapter, Filter, CursorLoader och ContentProvider

  4. lägga till 1 dag till ett DATETIME-formatvärde