


`SET FOREIGN_KEY_CHECKS=1` が警告またはエラーのトリガーに失敗した場合に、InnoDB テーブルで外部キー チェックを強制する方法
InnoDB テーブルで外部キー チェックを強制する方法
問題
行の削除を伴う定期的な更新を受ける一連の InnoDB テーブルを管理しています。そして挿入。これらのテーブルには外部キー制約があるため、テーブルのロード順序が重要になります。外部キー制約の問題を回避するには、外部キーのチェックを無効にして再度有効にする (SET FOREIGN_KEY_CHECKS=0 および SET FOREIGN_KEY_CHECKS=1) ことに頼ります。ただし、外部キー ルールに意図的に違反しているにもかかわらず、チェックを無効にしてデータをロードすると、再度有効にしたときに警告やエラーが発生しないことがわかります。
解決策
InnoDB は提供しません。外部キーのチェックを強制する直接的な方法ですが、回避策はあります。
ストアド キーの使用プロシージャ
1 つの方法は、データベース内のすべての外部キーを検査し、違反している外部キーを特定するストアド プロシージャ (ANALYZE_INVALID_FOREIGN_KEYS) を作成することです。このプロシージャは外部キーをループし、無効な参照をチェックするクエリを生成し、その結果を一時テーブルに保存します。
DELIMITER $$ DROP PROCEDURE IF EXISTS ANALYZE_INVALID_FOREIGN_KEYS$$ CREATE PROCEDURE `ANALYZE_INVALID_FOREIGN_KEYS`( checked_database_name VARCHAR(64), checked_table_name VARCHAR(64), temporary_result_table ENUM('Y', 'N')) LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA BEGIN -- ... (procedure implementation) END$$ DELIMITER ;
プロシージャを使用するには、次の 3 つのパラメータを指定します。
- チェックするデータベース名パターン (checked_database_name) (例: すべてのデータベースの %)
- テーブル名チェックするパターン (checked_table_name) (例: すべてのテーブルの %)
- 結果テーブルが一時的であるかどうか (temporary_result_table) (一時的な場合は Y、永続的な場合は N)
プロシージャ結果を INVALID_FOREIGN_KEYS という名前の一時テーブルまたは永続テーブルにロードします。このテーブルには、テーブル スキーマ、テーブル名、列名、制約名、参照テーブル スキーマ、参照テーブル名、参照列名、無効なキーの数、無効な行を取得するための SQL クエリなど、無効な外部キーに関する情報が含まれています。
使用例
すべての無効な外部キーをチェックする場合データベース:
CALL ANALYZE_INVALID_FOREIGN_KEYS('%', '%', 'Y');
結果を表示するには:
SELECT * FROM INVALID_FOREIGN_KEYS;
特定の外部キーの無効な行を取得するには、INVALID_FOREIGN_KEYS テーブルから対応する INVALID_KEY_SQL クエリを実行します。
注
このアプローチでは、参照元と参照先の両方にインデックスが必要です最適なパフォーマンスを実現する列。
以上が`SET FOREIGN_KEY_CHECKS=1` が警告またはエラーのトリガーに失敗した場合に、InnoDB テーブルで外部キー チェックを強制する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

mysqlviewshavelimitations:1)supportallsqloperations、制限、dataManipulationswithjoinsorubqueries.2)それらは、特にパフォーマンス、特にパルフェクソルラージャターセット

reperusermanmanagementInmysqliscialforenhancingsecurationsinginuring databaseaperation.1)usecreateusertoaddusers、指定connectionsourcewith@'localhost'or@'% '。

mysqldoes notimposeahardlimitontriggers、しかしpracticalfactorsdeTerminetheireffectiveuse:1)serverconufigurationStriggermanagement; 2)complentiggersincreaseSystemload;

はい、それはssafetostoreblobdatainmysql、butonsiderheSeCactors:1)Storagespace:blobscanconsumesificantspace.2)パフォーマンス:パフォーマンス:大規模なドゥエットブロブスメイズ階下3)backupandrecized recized recized recize

PHP Webインターフェイスを介してMySQLユーザーを追加すると、MySQLI拡張機能を使用できます。手順は次のとおりです。1。MySQLデータベースに接続し、MySQLI拡張機能を使用します。 2。ユーザーを作成し、CreateUserステートメントを使用し、パスワード()関数を使用してパスワードを暗号化します。 3. SQLインジェクションを防ぎ、MySQLI_REAL_ESCAPE_STRING()関数を使用してユーザー入力を処理します。 4.新しいユーザーに権限を割り当て、助成金ステートメントを使用します。

mysql'sblobissuitable forstoringbinarydatawithinarationaldatabase、whileenosqloptionslikemongodb、redis、andcassandraofferferulesions forunstructureddata.blobissimplerbutcanslowdowdowd withwithdata

toaddauserinmysql、使用:createuser'username '@' host'identifidedby'password '; here'showtodoitsely:1)chosehostcarefilytoconを選択しますTrolaccess.2)setResourcelimitslikemax_queries_per_hour.3)usestrong、uniquasswords.4)endforcessl/tlsconnectionswith

toavoidcommonMonmistakeswithStringDatatypesinmysql、undultingStringTypenuste、choosetherightType、andManageEncodingandCollationsEttingtingive.1)Usecharforfixed-LengthStrings、Varcharforaible Length、AndText/Blobforlardata.2)setCurrectCherts


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

メモ帳++7.3.1
使いやすく無料のコードエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!
