Mysql
 sql >> база данни >  >> RDS >> Mysql

Ред на изтриване с ограничения на външния ключ,

Официално нямате контрол върху реда на каскадните операции. Може да успеете да злоупотребите с някои недокументирани поведение обаче:

  • за MySQL 5.5 външните ключове се изпълняват в реда, в който са създадени, така че отпадането и пресъздаването на fk_category_org -ограничението трябва да работи
  • за MySQL 5.6+ външните ключове се изпълняват в лексикалния ред на имената им, така че преименуването на fk_category_org до напр. fk_z_category_org трябва да работи

Това е недокументирано и може да се промени по всяко време (и може да бъде повлияно от други фактори).

Като се има предвид това, правилният начин да направите това (и всичко друго твърде сложно за on cascade ) би било да добавите before delete -задействане във вашата organisation -таблица, която "ръчно" изтрива първо потребителите и след това категориите. before delete -тригерите се изпълняват преди on cascade (така че можете да решите дали искате да ги запазите или не, въпреки че вероятно ще бъде подвеждащо).

Не е напълно ясно дали това е вашето преднамерено поведение, но в момента потребителят може да има категория, която принадлежи към организация 1, докато е приписан към организация 2. Изтриването на организация 1 все още ще се провали. Изглежда малко така, сякаш това е, което искате да предотвратите чрез своя дизайн, но ако искате изтриването да работи и в този случай, вие трябва за да използвате спусъка, за да можете да го включите (или да го изтриете ръчно в приложението си), каскадирането няма да работи, освен ако не каскадирате и в таблицата с категории.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво представлява Option=N в низа за връзка на MySQL ODBC?

  2. Mysql CASE WHEN JOIN Грешка в оператора

  3. Производителност на MySQL – Бавна заявка и innodb_buffer_pool_size

  4. Вземете име на колона вместо стойност на колона

  5. MySQL срещу MySQLi при използване на PHP