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
Lepaskan: 2024-11-15 03:02:02
asal
317 orang telah melayarinya

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

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

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!

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