Implementieren eines zusammengesetzten Primärschlüssels mit automatischer Inkrementierung in MySQL
MySQL InnoDB-Tabellen unterstützen zusammengesetzte Primärschlüssel und ermöglichen die Identifizierung eindeutiger Zeilen mithilfe mehrerer Spalten . Es ist jedoch wichtig zu beachten, dass nur eine Spalte automatisch inkrementiert werden kann und diese als Teil der Primärschlüsseldefinition angegeben werden muss.
Beim Versuch, einen zusammengesetzten Primärschlüssel mit einer Spalte mit automatischer Inkrementierung zu erstellen und Wenn Sie zwei Fremdschlüssel verwenden, erhalten Benutzer möglicherweise die Fehlermeldung „FEHLER 1075: Falsche Tabellendefinition; es kann nur eine automatische Spalte geben und diese muss als Schlüssel definiert werden“.
Um dieses Problem zu beheben und die gewünschte Zusammensetzung zu implementieren Primärschlüssel, Trigger oder Prozeduren werden häufig empfohlen. Der Einfachheit halber besteht jedoch ein alternativer Ansatz darin, den folgenden MySQL-Trigger zu verwenden:
<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>
Dieser Trigger berechnet und weist automatisch einen inkrementierenden „sr_no“-Wert für neue Zeilen zu, die dieselbe „app_id“ und „test_id“ haben ' Werte. Durch die Implementierung dieses Triggers können Sie den gewünschten zusammengesetzten Primärschlüssel mit einer Spalte mit automatischer Inkrementierung erreichen.
Denken Sie daran, dass Trigger eine ordnungsgemäße Handhabung erfordern, um die Datenintegrität sicherzustellen und Race Conditions zu vermeiden. Es wird empfohlen, Trigger gründlich zu testen und zu warten, um unerwartetes Verhalten oder Leistungsengpässe zu verhindern.
Das obige ist der detaillierte Inhalt vonWie implementiert man einen zusammengesetzten Primärschlüssel mit einer automatisch inkrementierenden Spalte in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!