Rumah > pangkalan data > tutorial mysql > Bolehkah saya Auto-Tambah Kunci Bukan Utama dalam MySQL InnoDB?

Bolehkah saya Auto-Tambah Kunci Bukan Utama dalam MySQL InnoDB?

DDD
Lepaskan: 2024-11-01 17:16:30
asal
1214 orang telah melayarinya

Can I Auto-Increment a Non-Primary Key in MySQL InnoDB?

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:

  • Membuat komen_id kunci utama dan menguatkuasakan integriti dengan indeks unik pada (id_buku, cap masa, id_pengguna)
  • Menyimpan kunci utama sedia ada dan menggantikan komen_id dengan keseluruhan kunci utama dalam jadual book_comments_votes

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>
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan