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:
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!