Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Lajur Urutan Bergantung pada Kunci Asing dalam MySQL?

Bagaimana untuk Melaksanakan Lajur Urutan Bergantung pada Kunci Asing dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-11-15 03:02:02320semak imbas

How to Implement a Sequence Column Dependent on a Foreign Key in MySQL?

MySQL: Mewujudkan Lajur Jujukan Bergantung pada Medan Asing

Dalam bidang pengurusan pangkalan data, kadangkala menjadi penting untuk mengubah suai sedia ada struktur untuk menampung keperluan data baharu. Begitulah keadaannya apabila nombor jujukan perlu diberikan kepada rekod berdasarkan kunci asing tertentu.

Pertimbangkan jadual dengan ID lajur, AKAUN dan beberapa_bahan_lain. Matlamatnya ialah untuk memperkenalkan lajur baharu, SEQ, yang meningkat secara unik untuk setiap nilai AKAUN yang berbeza, seperti:

ID     ACCOUNT     SEQ     some_other_stuff
1      1           1       ...
2      1           2       ...
3      1           3       ...
4      2           1       ...
5      2           2       ...
6      1           4       ...

Penyelesaian Berasaskan SQL:

MySQL memperkasakan kami dengan pencetus, mekanisme yang berkuasa untuk melaksanakan tindakan yang dipratentukan secara automatik apabila peristiwa manipulasi data. Dalam keadaan ini, pencetus boleh digunakan untuk mengisi lajur SEQ dengan nilai yang sesuai semasa pemasukan rekod. Kod pencetus:

CREATE TRIGGER trg_mytable_bi
BEFORE INSERT ON mytable
FOR EACH ROW
BEGIN
      DECLARE nseq INT;
      SELECT COALESCE(MAX(seq), 0) + 1
      INTO nseq
      FROM mytable
      WHERE account = NEW.account;
      SET NEW.seq = nseq;
END;

Pecahan:

  • Pencetus trg_mytable_bi digunakan sebelum setiap operasi INSERT pada mytable.
  • Di dalam pencetus, nseq diisytiharkan sebagai pembolehubah integer.
  • Sesuatu subkueri mengambil nilai seq maksimum untuk akaun yang sepadan dan menambah 1 padanya, dengan berkesan menjana nombor jujukan seterusnya. Nilai ini disimpan dalam nseq.
  • Akhir sekali, NEW.seq (nilai seq untuk rekod baharu) ditetapkan kepada nseq, memastikan penjujukan yang betul.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Lajur Urutan Bergantung pada Kunci Asing dalam MySQL?. 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