MySQL で自動インクリメント列を備えた複合主キーを実装するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-04 08:55:01
オリジナル
744 人が閲覧しました

How to implement a composite primary key with an auto-increment column in MySQL?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート