Fiecare obiect din baza de date, inclusiv cheile străine ale tabelelor, trebuie să aibă un nume necesar pentru a modifica ulterior acest obiect. Dacă numele nu este specificat, atunci mysql va veni cu un nume.
Clauza NAME a constrângerii specifică explicit numele cheii străine. După ce specificați numele cheii în viitor, dacă doriți să îl ștergeți, îl puteți face utilizând modificarea tabelului de pe tabul cu tasta străină NAME.
De asemenea, constrângerea cuvintelor cheie este necesară pentru o anumită compatibilitate cu standardele SQL. De exemplu, în mysql cu aceasta, puteți declara și o constrângere CHECK care, conform standardelor SQL, trebuie să impună restricții asupra câmpului, de exemplu, valoarea sa trebuie să fie mai mare decât zero. Este adevărat că MySQL nu acceptă verificarea unor astfel de restricții, însă sintaxa pentru crearea acestora pentru eroare nu se ia în calcul, pentru compatibilitatea cu alte DBMS-uri.
răspunsul dat 19 Mar '16 la 12:19
Dacă solicitați motivul pentru care aceste constrângeri vă împiedică să efectuați operații de import / export de date, le puteți dezactiva în timp ce script-urile sunt executate:
SET FOREIGN_KEY_CHECKS = 0; se oprește
respectiv SET FORCE_KEY_CHECKS = 1; include verificarea cheilor externe.
Cu toate acestea, acest lucru nu este sigur din punct de vedere al integrității datelor. În mod obișnuit, o eroare de chei străine apare atunci când ordinea în care sunt inserate tabelele este încălcată. De exemplu, se introduce o tabelă de orașe unde cheia externă indică țara (fiecare oraș aparține unei țări), dar tabelul de țară nu există încă.
Așa cum am spus, la propria dvs. pericol, puteți dezactiva verificarea cheii în timp ce introduceți date. Dar, atunci există posibilitatea de a obține date de "nimeni". În cazul orașelor, puteți obține un oraș care nu aparține niciunei țări.
răspuns dat la data de 19 martie '16 la ora 13:45