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
Lepaskan: 2024-11-03 04:23:03
asal
329 orang telah melayarinya

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

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!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan