在 MySQL 中實作自增複合主鍵
MySQL InnoDB 表支援複合主鍵,可以使用多列來辨識唯一行。但是,需要注意的是,只有一列可以自動遞增,並且必須將其指定為主鍵定義的一部分。
當嘗試使用一個自動遞增列建立複合主鍵並且兩個外鍵,使用者可能會遇到錯誤「ERROR 1075:不正確的表定義;只能有一個自動列,並且必須將其定義為鍵」。
要克服此問題並實現所需的組合通常建議使用主鍵、觸發器或流程。但是,為了簡單起見,另一種方法是使用以下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中文網其他相關文章!