Rumah pangkalan data tutorial mysql MySQL触发器trigger学习_MySQL

MySQL触发器trigger学习_MySQL

Jun 01, 2016 pm 01:04 PM
pencetus

触发器:一类特殊的事物,可监视某种数据操作,并触发相关操作(insert/update/delete);表中的某些数据改变,希望同时可以引起其它相关数据改变的需求。 作用:变化自动完成某些语句查询,添加程序的灵活性。 创建触发器语法: #delimiter $$ //默认情况下,delimiter是分号“;”,sql语句带有;号结尾会报错,没到end就算到结束了,使用delimiter $$作用就是告诉mysql语句的结尾换成以$结束,相应使用end$$结束

create trigger test1  #触发器名称
(after/before) #触发时间
(insert/update/delete)  #监视事件
on table #监视地点(表名)
for each row  #mysql必须加的 
begin
    sql1
    ...
    sqlN
end;
#end$$
Salin selepas log masuk
查询已有trigger:show triggers 删除已有trigger:drop trigger 触发器名称 new/old: update触发:old 代表更新前的记录。new 代表更新后的记录. insert触发:old 不能使用。new 代表插入的记录. delete触发:old 代表删除的记录。new 不能使用.
实例操作: goods商品表和ord订单表
CREATE TABLE goods(
`goods_id` INT(10),
`name` VARCHAR(20),
`num` SMALLINT(4)
)ENGINE=INNODB CHARSET=utf8
CREATE TABLE `ord`(
`oid` INT(10),
`gid` INT(10),
`much` INT(10)
)ENGINE=INNODB CHARSET=utf8
INSERT INTO goods VALUES
(1, 'cat', 26),(2, 'dog', 26),(3, 'pig', 26);
Salin selepas log masuk
1、要求每下一个订单,goods表中的库存相应减少订单的数量。 mysql> select * from goods +----------+------+------+ | goods_id | name | num | +----------+------+------+ | 1 | cat | 26 | | 2 | dog | 26 | | 3 | pig | 26 | +----------+------+------+ 3 rows in set (0.00 sec) mysql> select * from ord; Empty set (0.00 sec)
#创建触发器test1
DELIMITER $$
CREATE TRIGGER test1
AFTER
INSERT
ON `ord`
FOR EACH ROW
BEGIN
UPDATE goods SET num= num - new.much WHERE goods_id = new.gid;
END$$
Salin selepas log masuk

mysql> CREATE TRIGGER test1 -> AFTER -> INSERT -> ON `ord` -> FOR EACH ROW -> BEGIN -> UPDATE goods SET num= num - new.much WHERE goods_id = new.gid; -> END$$ Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO `ord` VALUES (1, 2, 2)$$ Query OK, 1 row affected (0.03 sec) mysql> select * from ord$$ +------+------+------+ | oid | gid | much | +------+------+------+ | 1 | 2 | 2 | +------+------+------+ 1 row in set (0.00 sec) mysql> select * from goods$$ +----------+------+------+ | goods_id | name | num | +----------+------+------+ | 1 | cat | 26 | | 2 | dog | 24 | | 3 | pig | 26 | +----------+------+------+ 3 rows in set (0.00 sec) goods表里面的dog由26变成24
2、用户取消订单后商品库存订单的商品数要正常入库。以下只写触发器trigger,操作过程不写太多比较乱。
#触发器test2
CREATE TRIGGER test2
AFTER
DELETE
ON `ord`
FOR EACH ROW
BEGIN
UPDATE goods SET num = num + old.much WHERE goods_id = old.gid;
END $$ 
Salin selepas log masuk
\
3、用户更新订单的时候,商品库存要根据订单的数量正常更新。
#触发器test3
CREATE TRIGGER test3
AFTER
UPDATE
ON `ord`
FOR EACH ROW
BEGIN
UPDATE goods SET num = num + old.much - new.much WHERE goods_id = new.gid;
END$$
Salin selepas log masuk
\

查询触发器 \
删除触发器


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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyembunyikan teks sehingga diklik dalam Powerpoint Bagaimana untuk menyembunyikan teks sehingga diklik dalam Powerpoint Apr 14, 2023 pm 04:40 PM

Cara Menyembunyikan Teks Sebelum Sebarang Klik dalam PowerPoint Jika anda mahu teks muncul apabila anda mengklik di mana-mana pada slaid PowerPoint, menyediakannya adalah pantas dan mudah. Untuk menyembunyikan teks sebelum mengklik mana-mana butang dalam PowerPoint: Buka dokumen PowerPoint anda dan klik menu Sisipkan. Klik pada Slaid Baru. Pilih Kosong atau salah satu daripada pratetap lain. Masih dalam menu Sisip, klik Kotak Teks. Seret kotak teks ke slaid. Klik kotak teks dan masukkan anda

Bagaimana untuk menambah pencetus dalam oracle Bagaimana untuk menambah pencetus dalam oracle Dec 12, 2023 am 10:17 AM

Dalam pangkalan data Oracle, anda boleh menggunakan pernyataan CREATE TRIGGER untuk menambah pencetus. Pencetus ialah objek pangkalan data yang boleh menentukan satu atau lebih peristiwa pada jadual pangkalan data dan secara automatik melakukan tindakan yang sepadan apabila peristiwa itu berlaku.

Bagaimana untuk menulis pencetus dalam MySQL menggunakan PHP Bagaimana untuk menulis pencetus dalam MySQL menggunakan PHP Sep 21, 2023 am 08:16 AM

Cara menulis pencetus dalam MySQL menggunakan PHP MySQL ialah sistem pengurusan pangkalan data hubungan yang biasa digunakan, dan PHP ialah bahasa skrip sebelah pelayan yang popular. Menggunakan PHP untuk menulis pencetus dalam MySQL boleh membantu kami merealisasikan operasi pangkalan data automatik. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis pencetus MySQL dan memberikan contoh kod khusus. Sebelum memulakan, pastikan MySQL dan PHP telah dipasang dan jadual pangkalan data yang sepadan telah dibuat. 1. Cipta fail dan data PHP

Apakah tahap pencetus mysql? Apakah tahap pencetus mysql? Mar 30, 2023 pm 08:05 PM

Pencetus MySQL adalah peringkat baris. Menurut piawaian SQL, pencetus boleh dibahagikan kepada dua jenis: 1. Pencetus peringkat baris, yang akan diaktifkan sekali untuk setiap baris data yang diubah suai Jika pernyataan memasukkan 100 baris data, pencetus akan dipanggil 100 kali; . Pencetus peringkat penyata Pencetus diaktifkan sekali untuk setiap penyata Penyataan yang memasukkan 100 baris data hanya akan memanggil pencetus sekali. MySQL hanya menyokong pencetus peringkat baris, bukan pencetus peringkat pernyataan yang disediakan.

Bagaimana untuk menulis pencetus tersuai dan prosedur tersimpan dalam MySQL menggunakan PHP Bagaimana untuk menulis pencetus tersuai dan prosedur tersimpan dalam MySQL menggunakan PHP Sep 20, 2023 am 11:25 AM

Cara menulis pencetus tersuai dan prosedur tersimpan dalam MySQL menggunakan PHP Pengenalan: Semasa membangunkan aplikasi, kita selalunya perlu melakukan beberapa operasi pada peringkat pangkalan data, seperti memasukkan, mengemas kini atau memadam data. MySQL ialah sistem pengurusan pangkalan data hubungan yang digunakan secara meluas, dan PHP ialah bahasa skrip sebelah pelayan yang popular. Artikel ini akan memperkenalkan cara menulis pencetus tersuai dan prosedur tersimpan dalam MySQL menggunakan PHP, dan memberikan contoh kod khusus. 1. Apakah pencetus dan pencetus prosedur tersimpan (Trigg

Bagaimana untuk menulis pencetus tersuai dalam MySQL menggunakan Python Bagaimana untuk menulis pencetus tersuai dalam MySQL menggunakan Python Sep 20, 2023 am 11:04 AM

Cara menulis pencetus tersuai dalam MySQL menggunakan Pencetus Python ialah ciri berkuasa dalam MySQL yang boleh menentukan beberapa operasi yang dilaksanakan secara automatik pada jadual dalam pangkalan data. Python ialah bahasa pengaturcaraan ringkas dan berkuasa yang boleh berinteraksi dengan MySQL dengan mudah. Artikel ini akan memperkenalkan cara menulis pencetus tersuai menggunakan Python dan memberikan contoh kod khusus. Pertama, kita perlu memasang dan mengimport perpustakaan PyMySQL, yang merupakan cara Python bekerja dengan pangkalan data MySQL

Cara menggunakan pencetus MySQL untuk melaksanakan pengarkiban automatik data Cara menggunakan pencetus MySQL untuk melaksanakan pengarkiban automatik data Aug 02, 2023 am 10:37 AM

Cara menggunakan pencetus MySQL untuk melaksanakan pengarkiban data automatik Pengenalan: Dalam bidang pengurusan data moden, pengarkiban automatik dan pembersihan data adalah keperluan penting dan biasa. Apabila jumlah data meningkat, mengekalkan data sejarah yang lengkap akan menduduki sumber storan yang berlebihan dan mengurangkan prestasi pertanyaan. Pencetus MySQL menyediakan cara yang berkesan untuk mencapai keperluan ini. Artikel ini akan memperkenalkan cara menggunakan pencetus MySQL untuk mencapai pengarkiban data automatik. 1. Apakah pencetus MySQL? Pencetus MySQL ialah sejenis memori yang istimewa.

Bagaimana untuk menulis prosedur tersimpan tersuai, pencetus dan fungsi dalam MySQL menggunakan C# Bagaimana untuk menulis prosedur tersimpan tersuai, pencetus dan fungsi dalam MySQL menggunakan C# Sep 20, 2023 pm 12:04 PM

Cara menulis prosedur tersimpan tersuai, pencetus dan fungsi dalam MySQL menggunakan C# MySQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang digunakan secara meluas, dan C# ialah bahasa pengaturcaraan yang berkuasa untuk tugas pembangunan yang memerlukan interaksi dengan pangkalan data Katakanlah, MySQL dan C# adalah baik pilihan. Dalam MySQL, kita boleh menggunakan C# untuk menulis prosedur tersimpan tersuai, pencetus dan fungsi untuk mencapai operasi pangkalan data yang lebih fleksibel dan berkuasa. Artikel ini akan membimbing anda menggunakan C# untuk menulis dan melaksanakan

See all articles