0

私はmysqlデータベースを持っています、そして1つにtable私はf_id asを持っています、P_Keyそしてこれf_idは複数tableでとして参照されf_keyます。f_idそして、これのレコード(たとえば10)をtable一度にすべてから削除したいと思います。それからこれのために私は=10を持っているdeleteすべてのものにそれを含む必要がありますそれから私だけがそれをとして含むメインからこれをすることができます。自動でこれを調べることができる自動化されたプロセスはありますか?これは多くので参照されているため、クエリ内の(リストは18テーブルを超える非常に大きいため)のリスト全体を書き留めたくありません。tablef_idf_keydeletetableP_Keydeletetabletablep_keytables

4

2 に答える 2

1

これを行う最も簡単な方法は、キーにON DELETE CASCADE CONSTRAINTを設定して、親テーブルのレコードを削除すると、その行を参照する他のテーブルのすべての子レコードが削除されるようにすることです。ON DELETE CASCADE制約がない場合は、外部キーを削除して再度追加する必要があることに注意してください。このようなもの:

SHOW CREATE TABLE [table_name]

ALTER TABLE [table_name] DROP FOREIGN KEY [f_id];

ALTER TABLE [table_name]
ADD CONSTRAINT [f_id]
FOREIGN KEY (`[f_id]`) REFERENCES `[other_table]` (`[column_name]`)
ON DELETE CASCADE;
于 2012-09-12T10:52:56.270 に答える
0

information_schemaテーブルを調べて、テーブルの名前を見つけることができるはずです。何かのようなもの:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = "database_name"

検査するデータベースの名前に置き換えdatabase_nameてください。そうすれば、すべてのテーブル名が返されます。あなたはそのリストで何かをすることができるかもしれません。

于 2012-09-12T10:51:52.637 に答える