在MySQL中使用触发器Trigger的操作过程
Jun 07, 2016 pm 04:39 PM想监控Bugzilla数据库中几个重要的表,如果它们发生了任何改变(增、删、改),都希望能够记录下来,以便后面再写程序来分析。很自然,就想到使用MySQL的触发器(Trigger)了,学习了一会,记录如下: 1. 先建立一个新的表用于记录我需要的变化: CREATE TAB
想监控Bugzilla数据库中几个重要的表,如果它们发生了任何改变(增、删、改),都希望能够记录下来,以便后面再写程序来分析。很自然,就想到使用MySQL的触发器(Trigger)了,学习了一会,记录如下:
1. 先建立一个新的表用于记录我需要的变化:
CREATE TABLE `bugzilla_log` ( `id` INT UNSIGNED NOT NULL, `table` varchar(80) NOT NULL, `action` ENUM('insert','update','delete'), `ts` TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='logging some important changes in bugzilla DB';
2. 针对需要监控的表,创建触发器:
CREATE TRIGGER `classifications_insert` AFTER INSERT ON classifications FOR EACH ROW INSERT INTO `bugzilla_log` (`id`, `table`, `action`, `ts`) VALUES (NEW.id, 'classifications', 'insert', NOW()); ? CREATE TRIGGER `classifications_update` AFTER UPDATE ON classifications FOR EACH ROW INSERT INTO `bugzilla_log` (`id`, `table`, `action`, `ts`) VALUES (NEW.id, 'classifications', 'update', NOW()); ? CREATE TRIGGER `classifications_delete` BEFORE DELETE ON classifications FOR EACH ROW INSERT INTO `bugzilla_log` (`id`, `table`, `action`, `ts`) VALUES (OLD.id, 'classifications', 'delete', NOW());
请注意其中AFTER和BEFORE,以及OLD和NEW的使用。
Within the trigger body, you can refer to columns in the subject table (the table associated with the trigger) by using the aliases OLD and NEW. OLD.col_name refers to a column of an existing row before it is updated or deleted. NEW.col_name refers to the column of a new row to be inserted or an existing row after it is updated.
3. 查看当前数据库中的触发器:
SHOW TRIGGERS;
参考资料:
http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html
http://www.jicdesign.com/blog/web-development/how-to-use-mysql-triggers-to-log-table-changes.html
Original article: 在MySQL中使用触发器Trigger的操作过程
©2014 笑遍世界. All Rights Reserved.
原文地址:在MySQL中使用触发器Trigger的操作过程, 感谢原作者分享。

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kemahiran pemprosesan struktur data besar PHP

Bagaimana untuk mengoptimumkan prestasi pertanyaan MySQL dalam PHP?

Bagaimana untuk menggunakan sandaran dan pemulihan MySQL dalam PHP?

Bagaimana untuk memasukkan data ke dalam jadual MySQL menggunakan PHP?

Apakah senario aplikasi jenis penghitungan Java dalam pangkalan data?

Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4

Bagaimana untuk menggunakan prosedur tersimpan MySQL dalam PHP?

Bagaimana untuk membuat jadual MySQL menggunakan PHP?
