Rumah >pangkalan data >tutorial mysql >Bagaimana untuk melaksanakan lata kunci asing MySQL

Bagaimana untuk melaksanakan lata kunci asing MySQL

WBOY
WBOYke hadapan
2023-05-29 21:49:451452semak imbas

Pengenalan

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

  • TERHAD (sekatan sekatan)

  • TIADA TINDAKAN

  • SET NULL

  • CASCADE (Concatenation)

TERHAD adalah sama dengan TIADA TINDAKAN, yang bermaksud bahawa apabila

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.

Buat pangkalan data:

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

RUJUKAN stu(sid) fungsi rujukan. Rujuk sid dalam jadual stu

ON DELETE CASCADE cascade delete

ON UPDATE CASCADE cascade update

2. Masukkan data ke dalam dua jadual

rreee


Nota: Apabila memasukkan data ke dalam jadual sc, jika sisi yang dimasukkan ialah 22, sisipan akan gagal, melanggar kekangan kunci asing, kerana sisi kunci asing

berasal daripada kunci utama id dalam stu jadual. Iaitu, id dalam stu tidak mempunyai data yang sama dengan 22.

Pemadaman lata: Padamkan pelajar dengan id 2 dalam jadual stu dan gred pelajar dalam jadual sc juga akan dipadamkan dalam lata Bagaimana untuk melaksanakan lata kunci asing MySQL

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');


Kemas kini lata: Pelajar dengan id 3 dalam jadual stu ditukar kepada id 6 dan id sepadan pelajar dalam jadual sc juga akan dikemas kini dalam lata

delete from stu where sid = '2';

Bagaimana untuk melaksanakan lata kunci asing MySQL

Nota

Apabila memadamkan jadual, anda mesti memadamkan jadual kunci asing (sc) dahulu, dan kemudian memadamkan jadual kunci utama (stu)

Bagaimana untuk melaksanakan lata kunci asing MySQL

Gambar di atas melanggar kekangan kunci asing dan tidak boleh Padam

Bagaimana untuk melaksanakan lata kunci asing MySQL

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam