Rumah > Artikel > pangkalan data > Bagaimana untuk melaksanakan lata kunci asing MySQL
Kunci asing MySQL bertindak sebagai kekangan untuk memastikan integriti data di peringkat pangkalan data.
Sebagai contoh, menggunakan jenis kunci asing CASCADE (penggabungan lata), apabila jadual anak (seperti info_pengguna) dikaitkan dengan jadual induk (seperti pengguna), apabila jadual induk dikemas kini atau dipadamkan, anak itu jadual akan mengemas kini atau memadam rekod Proses ini adalah tahap pangkalan data yang telah selesai.
Terdapat banyak reka bentuk pangkalan data dalam sistem perusahaan awal Walaupun ia membantu pengaturcara menyimpan operasi pemadaman dan kemas kini, ia sebenarnya meningkatkan peraturan tersembunyi, meningkatkan kerumitan perisian dan melemahkan prestasi.
Jadi dalam reka bentuk aplikasi, kita harus mencuba yang terbaik untuk memastikan integriti data pada lapisan aplikasi (seperti menggunakan mekanisme pemprosesan transaksi), dan bukannya pada peringkat pangkalan data.
Berikut ialah pengenalan kepada kunci asing MySQL.
Satu-satunya enjin storan yang menyokong kunci asing dalam MySQL ialah InnoDB Apabila mencipta kunci asing, jadual induk mesti mempunyai indeks. Sub jadual juga akan membuat indeks yang sepadan secara automatik apabila mencipta kunci asing.
Apabila membuat indeks, anda boleh menentukan operasi yang sepadan pada jadual anak apabila memadam atau mengemas kini jadual induk, termasuk
jadual anak mempunyai rekod yang berkaitan, jadual induk tidak boleh dikemas kini; jadualApabila
mengemas kini atau memadam , mengemas kini atau memadam rekod yang sepadan bagi jadual anak SET NULL bermakna apabila jadual induk mengemas kini atau memadam, medan yang sepadan daripada jadual anak ialah SET NULL. Contoh
Oleh kerana hanya enjin InnoDB yang membenarkan penggunaan kunci asing, jadual data kami mesti menggunakan enjin InnoDB.
Create database test;
1 mula-mula buat dua jadual stu, sc
create table stu( sid int UNSIGNED primary key auto_increment, name varchar(20) not null) TYPE=InnoDB charset=utf8; create table sc( scid int UNSIGNED primary key auto_increment, sid int UNSIGNED not null, score varchar(20) default '0', index (sid), --外键必须加索引 FOREIGN KEY (sid) REFERENCES stu(sid) ON DELETE CASCADE ON UPDATE CASCADE) TYPE=InnoDB charset=utf8;
– (sid) menetapkan kunci asing, dan menetapkan sid sebagai kunci asing
ON DELETE CASCADE cascade delete
ON UPDATE CASCADE cascade update 2. Masukkan data ke dalam dua jadualrreee
Pemadaman lata: Padamkan pelajar dengan id 2 dalam jadual stu dan gred pelajar dalam jadual sc juga akan dipadamkan dalam lata
insert into stu (name) value ('zxf'); insert into stu (name) value ('ls'); insert into stu (name) value ('zs'); insert into stu (name) value ('ww'); insert into sc(sid,score) values ('1','98'); insert into sc(sid,score) values ('1','98'); insert into sc(sid,score) values ('2','34'); insert into sc(sid,score) values ('2','98'); insert into sc(sid,score) values ('2','98'); insert into sc(sid,score) values ('3','56'); insert into sc(sid,score) values ('4','78'); insert into sc(sid,score) values ('4','98');
delete from stu where sid = '2';NotaApabila memadamkan jadual, anda mesti memadamkan jadual kunci asing (sc) dahulu, dan kemudian memadamkan jadual kunci utama (stu) Gambar di atas melanggar kekangan kunci asing dan tidak boleh Padam Gambar di atas menunjukkan pemadaman biasa padamkan jadual sc dahulu dan kemudian jadual stu.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan lata kunci asing MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!