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