MySQL テーブルの最大行制限の達成
MySQL テーブルの厳密な最大行数を確立するという要件は、次のような課題を引き起こします。 MAX_ROWS テーブル プロパティは、データベース エンジンへのヒントとしてのみ機能します。ハード制限を強制するには、次のアプローチを検討してください:
トリガーで制限を強制する
行数を監視する BEFORE INSERT トリガーを作成する:
DELIMITER $$ CREATE TRIGGER trigger1 BEFORE INSERT ON table1 FOR EACH ROW BEGIN SELECT COUNT(*) INTO @cnt FROM table1; IF @cnt >= 25 THEN CALL sth(); -- raise an error END IF; END $$ DELIMITER ;
注意: 大規模な InnoDB テーブルに対する COUNT 操作は、遅い。
オーバーフロー時にエラーを発生させる
制限を超えたときに明示的にエラーを発生させるようにトリガーを変更します:
CREATE TRIGGER trigger1 BEFORE INSERT ON table1 FOR EACH ROW BEGIN DECLARE rowCount INT; SELECT COUNT(*) INTO rowCount FROM table1; IF (rowCount >= 25) THEN SIGNAL SQLSTATE '42000' SET MESSAGE_TEXT = 'Maximum row count reached (25)'; END IF; END
パフォーマンスに関する考慮事項
COUNT 操作が頻繁に行われることに注意してください大きなテーブルではパフォーマンスに影響を与える可能性があります。これを軽減するには、テーブルを最適化し、適切にインデックスを作成することを検討してください。
以上がMySQL テーブルで厳格な行制限を強制するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。