MySQL での自動インクリメントによる複合主キーの実装
MySQL InnoDB テーブルは複合主キーをサポートし、複数の列を使用して一意の行を識別できるようにします。 。ただし、自動インクリメントできる列は 1 つだけであり、主キー定義の一部として指定する必要があることに注意することが重要です。
1 つの自動インクリメント列を含む複合主キーを作成しようとする場合、外部キーが 2 つあると、「エラー 1075: テーブル定義が正しくありません。自動列は 1 つだけ存在でき、キーとして定義する必要があります。」というエラーが発生する可能性があります。
この問題を克服して目的の複合を実装するには通常は、主キー、トリガー、またはプロシージャを使用することをお勧めします。ただし、簡略化するために、次の MySQL トリガーを使用する別のアプローチもあります。
<code class="sql">DELIMITER $$ CREATE TRIGGER xxx BEFORE INSERT ON issue_log FOR EACH ROW BEGIN SET NEW.sr_no = ( SELECT IFNULL(MAX(sr_no), 0) + 1 FROM issue_log WHERE app_id = NEW.app_id AND test_id = NEW.test_id ); END $$ DELIMITER ;</code>
このトリガーは、同じ 'app_id' と 'test_id' を共有する新しい行に対して、増加する 'sr_no' 値を自動的に計算して割り当てます。 ' の値。このトリガーを実装すると、自動インクリメント列を使用して目的の複合主キーを実現できます。
データの整合性を確保し、競合状態を回避するには、トリガーを適切に処理する必要があることに注意してください。予期しない動作やパフォーマンスのボトルネックを防ぐために、トリガーを徹底的にテストして保守することをお勧めします。
以上がMySQL で自動インクリメント列を備えた複合主キーを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。