mysql-触发器

Jun 07, 2016 pm 04:27 PM
pencetus

mysql---触发器 触发器(trigger)顾名思义可以 监视某种情况,当情况发生时,触发某种操作 应用场景: 1、网购过程中,当提交商品订单时,往订单表中插入新记录,触发对应商品表的库存做出相应减少。 2、支付过程中,确认支付时触发验证卡上余额。 等等 以网

mysql---触发器

触发器(trigger)顾名思义可以监视某种情况,当情况发生时,触发某种操作

应用场景:

1、网购过程中,当提交商品订单时,往订单表中插入新记录,触发对应商品表的库存做出相应减少。

2、支付过程中,确认支付时触发验证卡上余额。

等等

以网购的情况举例说明触发器的作用:

现有商品表(goods),包括商品id(goods_id),商品名(goods_name),库存数量(goods_name)


还有订单表(order_table),包括商品id(goods_id),购买数量(buy_num)


如果往订单表中插入一行记录


代表用户购买了20个商品id为1的商品,即购买了20台小米手机

与此同时,在逻辑上goods表中小米手机的库存也应该减去20台。


这两步其实应该是一个整体,而我们现在是手工操作。如何让第一步完成后,第二步自动执行呢?

这就可以用到触发器的概念。第一条插入语句的执行,触发了第二条修改库存的SQL


触发器四要素:

监视地点、监视事件、触发时间、触发事件


监视地点:触发器监视的对象是

监视事件:触发器监视的事件只能是增、删、改

触发时间:在监视事件之前还是之后

触发事件:也只能是增、删、改

查看当前已有的触发器:

show triggers;


触发器的创建:

create trigger 触发器名称
after/befor (触发时间)
insert/update/delete (监视事件)
on  表名 (监视地址) 
for each row
begin
sql1;
..
sqlN;
end

需要注意点 是,所需要触发的SQL语句都要以‘;’结束。end后面也需要有分界符,但不能再是';'。所以创建触发器之前需要先修改分界符

delimiter 分界符


现在利用触发器对上面的例子进行修改


这个触发器以完成:当订购了20个商品id为1的商品时,goods表的库存会同步减去20。我们来看看效果


商品id为1的商品库存的确减去了20。触发器的确完成了任务,但这个触发器并不智能,他只能处理商品id为1,购买数量为20的情况。要想应对其他情况需要获得提交订单的记录才行。


触发器引用行变量:


对于insert,插入一行后出现了一个新行用new表示,在触发器中可以通过new.列名来引用插入行各个字段的值

对于delete,删除一行后之前的那行不见了,用old表示,在触发器中可以通过old.列名来引用被删除行各个字段的值

对于update,修改一行后旧的一样用old表示,新的一行用new表示,在触发器中可以通过new.列名来引用修改后行各个字段的值,old.列名来引用修改前各个字段的值。

知道这些后,对触发器进行进一步修改



再看一下效果

没有提交订单前商品表的情况

提交两个订单

商品表变化


可见触发器的确发生了作用


触发器after和before的区别:

after是先完成增删改再触发

before是在增删改之前将以判断

前面已经讨论过after的情况,现在如果提交了一个订单购买了100个id为4的商品,然而三星手机库存仅有30个。如果按照上面的触发器,最后库存会变成-70。这显然是不对的,所以这时候可以利用before来对输入进行判断,如果购买数量大于库存则只能购买所剩下的商品。



现在购买100个id为4的商品

再看看订单表


实际购买的只有30而不是100

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

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

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.

Cara menggunakan parameter dalam pencetus MySQL Cara menggunakan parameter dalam pencetus MySQL Mar 16, 2024 am 09:27 AM

Pencetus MySQL ialah program khas yang digunakan dalam sistem pengurusan pangkalan data untuk memantau operasi jadual tertentu dan melaksanakan operasi yang sepadan berdasarkan syarat yang telah ditetapkan. Apabila mencipta pencetus MySQL, kami boleh menggunakan parameter untuk menghantar data dan maklumat secara fleksibel, menjadikan pencetus lebih serba boleh dan boleh digunakan. Dalam MySQL, pencetus boleh mencetus dan melaksanakan logik yang sepadan sebelum atau selepas operasi INSERT, UPDATE dan DELETE bagi jadual tertentu. Menggunakan parameter boleh menjadikan pencetus lebih fleksibel dan boleh diluluskan mengikut keperluan.

See all articles