Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Auto-Increment Kekunci Bukan Utama dalam MySQL InnoDB?

Bagaimana untuk Auto-Increment Kekunci Bukan Utama dalam MySQL InnoDB?

Barbara Streisand
Barbara Streisandasal
2024-10-30 01:47:29849semak imbas

How to Auto-Increment Non-Primary Keys in MySQL InnoDB?

MySQL InnoDB: Auto-Incrementing Non-Primary Keys

Enjin storan InnoDB MySQL membenarkan nilai penambahan automatik untuk kunci utama. Walau bagaimanapun, penambahan kunci bukan utama secara automatik tidak disokong secara langsung.

Soalan Khusus: Struktur Jadual

Pertimbangkan struktur jadual berikut untuk "book_comments":

book_id     medium_int
timestamp   medium_int
user_id     medium_int
vote_up     small_int
vote_down   small_int
comment     text
comment_id  medium_int

Adakah Penambahan Auto Kunci Bukan Utama Mungkin?

Ya, adalah mungkin untuk menambah kunci bukan utama secara automatik. Walau bagaimanapun, ia memerlukan penciptaan indeks pada lajur untuk dinaikkan secara automatik.

Penyelesaian Disyorkan

Walaupun terdapat kemungkinan penambahan kunci bukan utama secara automatik, yang disyorkan penyelesaiannya ialah menjadikan "comment_id" sebagai kunci utama dan mencipta indeks unik pada gabungan "book_id", "timestamp" dan "user_id" untuk tujuan integriti data.

Pertimbangan Tambahan

Cadangan alternatif yang disebut dalam soalan mempunyai kelemahan:

  • Menjadikan "comment_id" sebagai kunci utama dan mencipta indeks unik: Penyelesaian ini memperkenalkan indeks tambahan , yang mungkin tidak diingini.
  • Menggantikan "comment_id" dengan kunci utama dalam "book_comments_votes": Ini meningkatkan dengan ketara saiz "book_comments_votes" dan boleh menjejaskan prestasi.

Oleh itu, penyelesaian yang paling cekap dan teguh ialah mengikut pendekatan yang disyorkan menggunakan "comment_id" sebagai kunci utama dan mencipta indeks unik pada "book_id", "timestamp" dan "user_id".

Atas ialah kandungan terperinci Bagaimana untuk Auto-Increment Kekunci Bukan Utama dalam MySQL InnoDB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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