Fungsi tersuai ialah cara untuk melanjutkan MySQL, dan penggunaannya adalah sama dengan fungsi terbina dalam.
Dua syarat yang diperlukan untuk menentukan fungsi: parameter dan nilai pulangan. Fungsi boleh mengembalikan nilai apa-apa jenis dan juga boleh menerima parameter jenis ini.
Mengenai badan fungsi:
Badan fungsi terdiri daripada pernyataan SQL yang sah.
Tubuh fungsi boleh menjadi pernyataan SELECT atau INSERT yang mudah.
Jika badan fungsi ialah struktur yang mematuhi, gunakan pernyataan BEGIN....AND untuk membalutnya.
Struktur komposit boleh mengandungi pengisytiharan, gelung, struktur kawalan, dsb.
Penting: Fungsi tersuai tidak boleh mempunyai nama yang sama, sama seperti mentakrifkan pembolehubah global, nama pembolehubah tidak boleh konsisten.
Format sintaks:
create function 函数名(参数列表) returns type(返回值类型) begin --SQL语句 end;
Keperluan: Tentukan fungsi prosedur tersimpan , Dapatkan jumlah bilangan rekod yang memenuhi syarat
Pelaksanaan:
delimiter $ create function fun(countryId int) returns int begin # 定义一个存储总数据条数的变量 declare cum int default 0; # 查询等于传递参数的全部的数据数,然后将其赋值给定义的变量 select count(*) into cum from city where country_id = countryId; # 返回结果值。存储函数必须有返回值 return cum; end $ delimiter ;
Format sintaks:
select 函数名(参数列表);
Nota: Apabila memanggil prosedur tersimpan, kata kunci panggilan digunakan, tetapi apabila memanggil fungsi tersimpan, hanya gunakan pilih terus, sama seperti memanggil fungsi agregat biasa dalam MySQL.
select fun(1); # 这里和存储过程一样,调用的时候需要加小括号和参数,但是在删除的时候指定函数名即可
Format sintaks
drop [if exists] function fun;
Pencetus hanya boleh digunakan apabila menambah, memadam atau mengubah suai, tetapi bukan semasa membuat pertanyaan.
2.2 Cipta pencetus
rreee Keperluan: Rekod log perubahan data emp_log jadual emp melalui pencetus, yang termasuk penambahan, pengubahsuaian dan pemadaman
Pelaksanaan:
Analisis:
Pencetus hanya boleh mengendalikan satu jenis operasi data dan tidak boleh melengkapkan operasi menambah, mengubah suai dan memadam pada masa yang sama. Oleh itu, pelbagai pencetus perlu ditakrifkan pada masa ini untuk menyelesaikan tugas pengelogan ini.Oleh kerana MySQL ialah pencetus untuk operasi peringkat baris, baharu dan lama menyimpan seluruh baris data.
Buat pencetus untuk melaksanakan sisipan:
Pada masa ini pembolehubah lama Data sebelum pengubahsuaian disimpan dalam pembolehubah baharu, dan data selepas pengubahsuaian disimpan dalam pembolehubah baharu
Buat pencetus untuk melaksanakan pemadaman:
Data yang akan dipadamkan disimpan dalam pembolehubah lama pada masa ini
Ujian: Ujian mestilah jadual emp bagi operasi, supaya perkara di atas akan dicetuskan Pencetus ditentukan.
2.3 Padamkan pencetus
create trigger(触发器) trigger_name(触发器名称) before/after insert/update/delete on tab_name(表名) [for each row](行级触发器) begin trigger_stmt;(触发器的逻辑) end;
2.4 Lihat pencetus
Anda boleh melihat status, sintaks dan maklumat pencetus lain dengan melaksanakan arahan pencetus rancangan.Struktur tatabahasa:
drop trigger [schema_name.](数据库名)trigger_name(触发器名);
Atas ialah kandungan terperinci Bagaimana untuk menyesuaikan fungsi dan pencetus dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!