在多列主鍵上使用自動增量
維護跨資料庫的資料完整性可能具有挑戰性。透過利用兩列作為複合主鍵,可以確保每行的唯一性。但是,在自動遞增其中一列時,必須考慮如何管理行的唯一識別。
在 MyISAM 中使用 AUTO_INCRMENT
MyISAM 儲存引擎可讓您在多列索引中的非主列上指定 AUTO_INCRMENT。自動增量值計算為 MAX(auto_increment_column) 1,其中符合給定前綴。這在將資料組織成有序組時特別有用。
用法範例:
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;
在此範例中,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');
SELECT * FROM mytable ORDER BY database_id,table_id; +----------+-------------+--------------+ | table_id | database_id | other_column | +----------+-------------+--------------+ | 1 | 1 | Foo | | 2 | 1 | Bar | | 3 | 1 | Bam | | 1 | 2 | Baz | | 2 | 2 | Zam | | 1 | 3 | Zoo | +----------+-------------+--------------+
如您所見,table_id 會針對每個唯一的database_id 自動遞增。這確保了每行的唯一性以及基於database_id的有序分組。
以上是多列主鍵如何自動增加一列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!