Bagaimana untuk Mencapai Peningkatan Auto dalam Kunci Komposit dalam MySQL?

Barbara Streisand
Lepaskan: 2024-11-03 05:24:03
asal
204 orang telah melayarinya

How to Achieve Auto Increment in a Composite Key in MySQL?

Mendefinisikan Kunci Komposit dengan Peningkatan Auto dalam MySQL: Satu Cabaran

Mencipta kunci komposit dengan lajur kenaikan automatik boleh memberikan cabaran dalam MySQL. Ini adalah benar terutamanya untuk jadual InnoDB, yang mengenakan sekatan tertentu.

Senario dan Ralat:

Pertimbangkan skema jadual berikut:

CREATE  TABLE `issue_log` (
`sr_no` INT NOT NULL AUTO_INCREMENT ,
  `app_id` INT NOT NULL ,
  `test_id` INT NOT NULL ,
  `issue_name` VARCHAR(255) NOT NULL ,
primary key (app_id, test_id,sr_no)
);
Salin selepas log masuk

Percubaan untuk melaksanakan pertanyaan ini boleh mengakibatkan ralat berikut:

ERROR 1075: Incorrect table definition; there can be only one auto column and it must be defined as a key
Salin selepas log masuk

Matlamat:

Tingkah laku yang diingini adalah untuk lajur sr_no meningkat secara automatik untuk kombinasi unik daripada app_id dan test_id.

Batasan dan Penyelesaian:

Jadual InnoDB membenarkan hanya satu lajur autokenaikan tunggal. Oleh itu, tingkah laku yang diingini tidak boleh dicapai secara langsung melalui definisi skema.

Alternatif:

Satu penyelesaian untuk mengatasi had ini ialah menggunakan pencetus atau prosedur untuk meningkatkan secara manual lajur sr_no berdasarkan kriteria. Contohnya, pencetus berikut boleh digunakan:

DELIMITER $$

CREATE TRIGGER xxx BEFORE INSERT ON issue_log
FOR EACH ROW BEGIN
    SET NEW.sr_no = (
       SELECT IFNULL(MAX(sr_no), 0) + 1
       FROM issue_log
       WHERE app_id  = NEW.app_id
         AND test_id = NEW.test_id
    );
END $$

DELIMITER ;
Salin selepas log masuk

Pertimbangan Lain:

  • Pencetus dan prosedur boleh menambah overhed pada pangkalan data.
  • Enjin pangkalan data alternatif, seperti MyISAM, mungkin menyokong penambahan automatik merentas berbilang lajur dalam kunci komposit.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Peningkatan Auto dalam Kunci Komposit dalam MySQL?. 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