MySQL InnoDB: Auto-Incrementing Non-Primary Keys
Dalam MySQL InnoDB, adalah mungkin untuk menambah automatik kunci bukan utama lajur, tetapi berbuat demikian secara amnya tidak disyorkan.
Soalan:
Adakah mungkin untuk menambah kunci bukan utama secara automatik, khususnya lajur comment_id dalam book_comments jadual?
Alternatif:
Penyoal mencadangkan dua alternatif untuk menggunakan kunci bukan utama penambahan automatik:
Walau bagaimanapun , alternatif ini mempunyai kelemahan seperti menambah overhed indeks yang tidak perlu atau meningkatkan saiz jadual dengan ketara.
Jawapan:
Ya, adalah mungkin untuk menambah secara automatik bukan utama kunci dengan mencipta indeks pada lajur itu. Contoh berikut mencipta jadual dengan lajur autoincrementing testInc:
<code class="sql">CREATE TABLE `test` ( `testID` int(11) NOT NULL, `string` varchar(45) DEFAULT NULL, `testInc` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`testID`), KEY `testInc` (`testInc`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;</code>
Walau bagaimanapun, pakar sangat menasihatkan agar tidak menggunakan amalan ini. Pendekatan yang lebih sesuai ialah menjadikan comment_id sebagai kunci utama dan menguatkuasakan integriti melalui indeks unik pada (book_id, timestamp, user_id). Pendekatan ini menyediakan kunci utama yang sesuai untuk jadual dan mematuhi prinsip paling tidak terkejut.
Atas ialah kandungan terperinci Bolehkah saya Auto-Tambah Kunci Bukan Utama dalam MySQL InnoDB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!