Jak zmienić istniejącą tabelę w MySQL, ustawiając klucz obcy na inną tabelę, używając wiersza poleceń?Jak zmienić klucz obcy MySQL za pomocą wiersza polecenia
Odpowiedz
Musisz opuścić istniejący foreign key
i utworzyć inny. Na przykład takich jak to:
ALTER TABLE my_table DROP FOREIGN KEY my_key;
ALTER TABLE my_table ADD CONSTRAINT my_key FOREIGN KEY ('some_id')
REFERENCES some_new_table ('some_other_id') ON UPDATE CASCADE ON DELETE CASCADE;
Twój kod działa, ale mam powiązane pytanie. Kiedy próbowałem połączyć te dwa zapytania w jedno zapytanie, 'ALTER TABLE my_table DROP ..., ADD ...' Wystąpił błąd, _errno: 121 "Zduplikowany klucz przy zapisie lub aktualizacji" _. Czy brakuje mi czegoś, czy też nie da się połączyć tych zapytań? – iloo
Execute help alter table
na mysql
wierszu polecenia, a wyjście jest bardzo wymowne.
Poszukaj add constraint
z klauzulą i zastosuj ją do swojego stołu.
mysql> help alter table
Name: 'ALTER TABLE'
Description:
Syntax:
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...
alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
| ADD [COLUMN] (column_definition,...)
| ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
PRIMARY KEY [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
| ADD [FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
[reference_definition]
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP {INDEX|KEY} index_name
| DROP FOREIGN KEY fk_symbol
| DISABLE KEYS
| ENABLE KEYS
| RENAME [TO] new_tbl_name
| ORDER BY col_name
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
| DISCARD TABLESPACE
| IMPORT TABLESPACE
| table_option ...
udało mi się osiągnąć to samo przez:
ALTER TABLE the_table_name
ADD CONSTRAINT the_name_of_column_you_want_to_use_as_foreign_key
REFERENCES other_table_primary_id (Column_name)
Jeśli wiele kluczy obcych przykuty razem i pojawi się błąd, który kończy z errorno 15x
to najprawdopodobniej oznacza, że istnieją inne tabele które są zależne od klucza obcego, który próbujesz upuścić.
Aby upuścić klucz obcy, gdy pojawi się ten błąd, musisz wykonać SET FOREIGN_KEY_CHECKS = 0;
, a następnie musisz najpierw usunąć klucze obce z tabel, które nie mają żadnych innych tabel zależnych od nich. Następnie można z powodzeniem upuścić klucze obce na następnej tabeli w łańcuchu i tak dalej.
Po zakończeniu uruchom ponownie SET FOREIGN_KEY_CHECKS = 1;
.
- 1. Jak zmienić klucz obcy?
- 2. Wielokolumnowy klucz obcy w MySQL?
- 3. Pole upuszczenia MySQL; klucz obcy errorno 150
- 4. Jak telnet Google za pomocą wiersza polecenia?
- 5. Wykonaj procedury przechowywanej MySQL za pomocą wiersza polecenia
- 6. Upuść nienazwany klucz obcy w MySql
- 7. Zmiana MySQL klucz podstawowy, gdy istnieje klucz obcy contraints
- 8. MySQL - nie można dodać klucz obcy
- 9. MySQL: Wstaw, jeśli istnieje klucz obcy
- 10. Klucz obcy MySQL na tej samej tabeli
- 11. Jak zaktualizować klucz obcy w bazie danych mysql
- 12. Rails 4.2 klucz obcy
- 13. Zaimportuj projekt zaćmienia za pomocą wiersza polecenia
- 14. MySQL - Nie można dodać lub zaktualizować wiersza podrzędnego: klucz obcy nie powiódł się
- 15. Wyłączenie klucz obcy kontrole linii poleceń
- 16. Jak znaleźć określony klucz obcy tabeli za pośrednictwem T-SQL?
- 17. Klucz obcy SQLite?
- 18. Klucz obcy Sequelize.js
- 19. Klucz obcy SQLite
- 20. Łączenie tabel, klucz obcy
- 21. Klucz obcy Django Model
- 22. Modyfikuj klucz obcy w Ecto
- 23. Jak zaktualizować widok uproszczeń za pomocą wiersza polecenia systemu Windows?
- 24. Jak zautomatyzować proces za pomocą narzędzia wiersza polecenia sqlite3.exe?
- 25. Jak wyłączyć i włączyć port USB za pomocą wiersza polecenia?
- 26. Zmiana nazwy pliku wyjściowego "Odtwórz dist" za pomocą wiersza polecenia
- 27. Jak zmienić nazwę pakietu aplikacji dla systemu Android za pomocą wiersza polecenia
- 28. Jak utworzyć klucz obcy w phpmyadmin
- 29. ScalaQuery wielokrotny klucz podstawowy i klucz obcy
- 30. klucz Composite jako klucz obcy (SQL)
Próbowałem użyć google i nie znalazłem niczego, co obejmowałoby tę dokładną sprawę. Wiem, aby to zrobić w Administratorze MySQL lub utworzyć tabelę z kluczem obcym, ale nie znam tego we wspomnianym pytaniu. –
Należy pamiętać, że dokumentację produktu można znaleźć w Google przy użyciu 'mysql 5.7 alter table'. –