Rumah >pangkalan data >SQL >Penggunaan dan sintaks pencetus sql

Penggunaan dan sintaks pencetus sql

小老鼠
小老鼠asal
2024-04-13 14:57:161079semak imbas

Pencetus ialah kod pangkalan data yang dilaksanakan secara automatik apabila peristiwa tertentu (masukkan, kemas kini, padam) berlaku. Sintaks pencetus termasuk nama pencetus, nama jadual, masa pencetus (SEBELUM/SELEPAS) dan jenis acara (MASUKKAN/KEMASKINI/DELETE). Jenis pencetus termasuk SEBELUM dan SELEPAS, dan jenis acara termasuk INSERT, UPDATE dan DELETE. Pencetus boleh digunakan untuk pengesahan integriti data, pengelogan audit, tugasan automatik dan logik perniagaan. Sebagai contoh, anda boleh mencipta pencetus untuk merekodkan masa sisipan apabila baris baharu dimasukkan untuk memastikan ketekalan data.

Penggunaan dan sintaks pencetus sql

Penggunaan dan sintaks pencetus SQL

Apakah itu pencetus?

Pencetus ialah sekeping kod dalam pangkalan data yang secara automatik mencetuskan pelaksanaan apabila peristiwa tertentu dalam pangkalan data berlaku. Ia digunakan untuk melakukan tindakan tersuai apabila data berubah. Sintaks pencetus >SEBELUM code> Pencetus: Laksanakan sebelum acara berlaku.

SELEPAS Pencetus: dilaksanakan selepas peristiwa berlaku.

Mengikut jenis acara, pencetus boleh dibahagikan kepada:

INSERT Pencetus: dicetuskan apabila baris baharu disisipkan.

KEMASKINI Pencetus: Menyala apabila baris sedia ada dikemas kini.

PADAM Pencetus: Menyala apabila baris dipadamkan.

Senario penggunaan pencetus

Pencetus digunakan secara meluas dalam senario berikut:

  • BEFORE 触发器:在事件发生之前执行。
  • AFTER 触发器:在事件发生之后执行。

根据事件类型,触发器可分为:

  • INSERT 触发器:在插入新行时触发。
  • UPDATE 触发器:在更新现有行时触发。
  • DELETE 触发器:在删除行时触发。

触发器的使用场景

触发器广泛用于以下场景:

  • 数据完整性验证:确保数据符合特定规则(例如,非空约束、唯一性约束)。
  • 审计和记录:跟踪数据库中的变化并记录用户活动。
  • 自动任务:在数据更改时自动执行特定任务(例如,发送电子邮件通知)。
  • 业务逻辑:实现复杂的业务规则,例如计算 derived column 或维护关联表。

示例

以下是一个示例触发器,用于在向 users 表中插入新行时记录插入时间:

<code>CREATE TRIGGER trigger_name
ON table_name
FOR INSERT | UPDATE | DELETE
AS
BEGIN
   -- 触发器代码...
END;</code>

当插入新行到 users 表时,insert_timestamp 触发器会在插入之前执行,并自动将当前时间戳设置为新建行的 created_atPengesahan integriti data:

Pastikan data mematuhi peraturan tertentu (e. , kekangan keunikan). 🎜🎜Audit dan Pengelogan: 🎜Jejaki perubahan dalam pangkalan data dan log aktiviti pengguna. 🎜🎜Tugas automatik: 🎜Lakukan tugas tertentu secara automatik apabila data berubah (cth., hantar pemberitahuan e-mel). 🎜🎜Logik perniagaan: 🎜Laksanakan peraturan perniagaan yang kompleks, seperti mengira lajur terbitan atau menyelenggara jadual berkaitan. 🎜🎜Contoh🎜🎜🎜Berikut ialah contoh pencetus untuk log masa sisipan apabila baris baharu dimasukkan ke dalam jadual pengguna: 🎜
<code class="sql">CREATE TRIGGER insert_timestamp
BEFORE INSERT ON users
AS
BEGIN
   SET NEW.created_at = CURRENT_TIMESTAMP();
END;</code>
🎜Apabila baris baharu disisipkan Apabila pergi ke jadual users, pencetus insert_timestamp dilaksanakan sebelum memasukkan dan secara automatik menetapkan cap masa semasa ke medan created_at pada baris baharu . 🎜

Atas ialah kandungan terperinci Penggunaan dan sintaks pencetus sql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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