Rumah >pangkalan data >tutorial mysql >Bolehkah Anda Auto Tambah Kekunci Bukan Utama dalam MySQL InnoDB?

Bolehkah Anda Auto Tambah Kekunci Bukan Utama dalam MySQL InnoDB?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 04:23:03363semak imbas

Can You Auto-Increment Non-Primary Keys in MySQL InnoDB?

MySQL InnoDB: Autoincrementing Non-Primary Keys

Dalam enjin storan InnoDB MySQL, kunci utama biasanya dinaikkan secara automatik. Walau bagaimanapun, adalah mungkin untuk menambah kunci bukan utama secara automatik juga.

Pernyataan Masalah

Skema pangkalan data termasuk dua jadual: "book_comments" dan "book_comments_votes." Jadual "book_comments" mempunyai lajur bukan kunci utama "comment_id" yang perlu ditambah secara automatik untuk konsisten dengan jadual "book_comments_votes", yang mengandungi rujukan kepada "comment_id" sebagai kunci utamanya.

Penyelesaian

Untuk menambah automatik kunci bukan utama, ia mesti diisytiharkan sebagai indeks. Berikut ialah contoh:

<code class="mysql">CREATE TABLE `book_comments` (
  `book_id` MEDIUMINT NOT NULL,
  `timestamp` MEDIUMINT NOT NULL,
  `user_id` MEDIUMINT NOT NULL,
  `vote_up` SMALLINT,
  `vote_down` SMALLINT,
  `comment` TEXT,
  `comment_id` MEDIUMINT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`book_id`, `timestamp`, `user_id`),
  KEY `comment_id` (`comment_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;</code>

Alternatif dan Perbincangan

Walaupun mencipta indeks ringkas pada kunci bukan utama ialah penyelesaian yang paling mudah, beberapa alternatif wujud:

  • Menjadikan comment_id sebagai kunci utama: Ini memerlukan penciptaan indeks unik tambahan pada (book_id, timestamp, user_id) untuk mengekalkan integriti.
  • Menyimpan keseluruhan kunci utama dalam book_comments_votes: Ini meningkatkan saiz jadual dengan ketara.

Walau bagaimanapun, penyelesaian yang disyorkan kekal untuk mencipta indeks unik pada kunci bukan utama dan mengelakkan kelemahan alternatif. Pendekatan ini memberikan kedua-dua kesederhanaan dan integriti tanpa mengorbankan prestasi atau kecekapan penyimpanan data.

Atas ialah kandungan terperinci Bolehkah Anda Auto Tambah 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