MySQLで既存のテーブルを変更する方法、外部キーを別のテーブルに設定する方法、コマンドラインを使用する方法コマンドラインを使用してMySQLテーブルの外部キーを変更する方法
答えて
既存のforeign key
を削除してもう1つ作成する必要があります。このような例:
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;
あなたのコードは動作しますが、私は関連する質問があります。これら2つのクエリを1つのクエリに結合しようとすると、 'ALTER TABLE my_table DROP ...、ADD ...'エラーが発生しました:_errno:121 "書き込みまたは更新時に重複するキー" _。何か不足しているのですか、それとも実際にこれらのクエリを組み合わせることは不可能ですか? – iloo
はmysql
コマンドプロンプトでhelp alter table
を実行し、出力が非常に自明です。
add constraint
をforeign key
と検索し、テーブルに適用します。
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 ...
私はで同じことを達成することができました:あなたが一緒に連鎖し、複数の外部キーを持っていて、errorno 15x
で終わるエラーが出た場合、それは最も可能性の高い他のテーブルがあることを意味し
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)
あなたがドロップしようとしている外部キーに依存しています。
エラーが発生したときに外部キーを削除するには、SET FOREIGN_KEY_CHECKS = 0;
を実行する必要があります。次に、他のテーブルを持たないテーブルに外部キーをドロップする必要があります。それで、チェーン内の次のテーブルに外部キーを正常にドロップすることができます。
完了したら、もう一度SET FOREIGN_KEY_CHECKS = 1;
を実行してください。
- 1. MySQLで循環外部キーを使用してテーブルを削除する方法
- 2. 外部キーを使用してMySQLテーブルをリンクする
- 3. テーブルアダプタを使用してデータセットの外部キー制約を変更する方法
- 4. MySQLテーブルの外部キーをリストする実行方法
- 5. 外部キー名の変更方法は?
- 6. djangoモデルの外部キーを使用してデータベースpostgresテーブルにアクセスする方法
- 7. mysqlデータベースの外部キー値を更新する方法
- 8. 外部キーとINSERT INTOテーブル(MySQL/InnoDB)を取り出す方法
- 9. 外部キーを使用してオブジェクトを選択する方法
- 10. 外部キーを使用して2つのテーブルからmysql表示データ
- 11. 変更主キー、外部キー
- 12. 外部キーを使用してテーブルに挿入しますか?
- 13. mysqlに外部キー制約を持つテーブルプライマリキーを変更する
- 14. コマンドラインでDB2で外部キー名を表示する方法
- 15. 外部キーとしてvarcharのみを持つMySQLテーブル
- 16. Apache Igniteで外部キーを使用してWrite-behindを使用する方法
- 17. mysql外部キーでbigintにintカラムを変更する
- 18. Slickのマップされたテーブルを外部キーで使用する方法は?
- 19. 外部キーとしてvarcharカラムを持つMySQLテーブル
- 20. MySQL - プライマリキーとしての外部キーの使用
- 21. mysql外部キー
- 22. 外部キーとしてvarbinaryを使用
- 23. MVC 3のエンティティフレームワーク:外部キーを使用してモデルを挿入する方法
- 24. 外部キーを使用してテーブルを作成するためのSQLite構文
- 25. EFで共有する外部キーを使用する方法
- 26. トランザクションのmysql外部キー更新制約?
- 27. AutoIncrement変数を外部キーとして使用 - 外部キーを取得するcontraintエラー
- 28. mySQLの外部キー
- 29. SQL Serverテーブルの外部キーを使用したデータの削除
- 30. のMySQL:外部キーを追加すると、ここでMyISAMテーブル
Googleを使用しようとしましたが、この正確なケースをカバーするものは見つかりませんでした。私はMySQLの管理者でそれを行うか、または外部キーを使用してテーブルを作成することを知っていますが、私は上記の質問でこれを知らない。 –
製品ドキュメントは、mysql 5.7 alter tableを使用してGoogleで見つけることができます。 –