使用多列自動遞增主鍵和輔助列自動遞增
在具有共享結構的資料庫中維護資料完整性可以是至關重要的。作為策略的一部分,您正在考慮使用兩個欄位作為聯合主鍵,一列是資料庫標識符,另一列是表鍵。但是,您希望將表鍵設定為根據資料庫識別碼自動遞增。
對於 MySQL,您可以根據所使用的儲存引擎進行選擇。如果您使用 MyISAM,則可以利用其在多列索引中的輔助列上指定 AUTO_INCREMENT 的功能。
要了解其工作原理,請考慮以下範例:
CREATE TABLE animals ( grp ENUM('fish','mammal','bird') NOT NULL, id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (grp,id) ) ENGINE=MyISAM;
在此表中,grp 和 id 列構成複合主鍵。 id 欄位是自動遞增的,但其值計算會考慮前綴(在本例中為 grp 值)。
將此概念應用於您的場景:
CREATE TABLE mytable ( table_id MEDIUMINT NOT NULL AUTO_INCREMENT, database_id MEDIUMINT NOT NULL, other_column CHAR(30) NOT NULL, PRIMARY KEY (database_id,table_id) ) ENGINE=MyISAM;
插入範例資料:
INSERT INTO mytable (database_id, other_column) VALUES (1,'Foo'),(1,'Bar'),(2,'Baz'),(1,'Bam'),(2,'Zam'),(3,'Zoo');
查詢table:
SELECT * FROM mytable ORDER BY database_id,table_id;
這將傳回按database_id分組的結果,每個群組的table_id值自動遞增。
以上是MySQL如何實作多列自增主鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!