peri hokiperihokiclarustologisticsrimashaop.comangelpaintingtools.co.iningin cuan cepat joki profesional gates of olympus perihokijalan perihoki pasti cuan dari spin scatter hitam mahjong ways 2 pgsoftmahjong wins 3 sukses dengan teknik pancingan gacor perihkibanyak jalan alternatif baccarat online di perihokikemenangan substansial mahjong ways 2 keuntungan nyata perihokiscatter hitam mahjong wins 3 spin perihoki pasti jeperahasia rtp live pola pragmatic gates of olympus duta76trik duta7 pgsoft mahjong ways 2 modal receh maxwingampang meraih keberuntungan di mahjong wins 3 duta76cara dapat saldo lewat jalur pintas dadu sicbo duta76spin mahjong ways 2 pgsoft scatter hitam maxwin duta76duta76 berikan kemenangan konsisten di mahjong wins 3mahjong wins bantu ekonomi keluargaabc1131 bahas rtp live mahjong pgsoftmomen menarik mahjong wins yang harus anda ketahuipesona scatter wild mahjong ways2spin pelan mahjong ways penghasil bonus harianstrategi unik kakek royteknik memancing scatter hitam untuk meraih cuaninovasi mahjong wins untuk pemain barumenggugah dewa naga mahjong ways munculkan scatter hitammenikmati pola mahjong ways sambil bersantaimeningkatkan peluang dengan jeda spin mahjong wayspeluang kaya dalam scatter wild

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 282

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_cookie_params(): Cannot change session cookie parameters when headers already sent

Filename: Session/Session.php

Line Number: 294

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 304

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 314

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 315

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 316

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 317

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 375

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: drivers/Session_files_driver.php

Line Number: 108

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_save_handler(): Cannot change save handler when headers already sent

Filename: Session/Session.php

Line Number: 110

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_start(): Cannot start session when headers already sent

Filename: Session/Session.php

Line Number: 143

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

After Delete Trigger trong MySQL - Freetuts
VIEW
STORED PROCEDURE
INDEX
FULL TEXT SEARCH
TRIGGER
TIPS
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

After Delete Trigger trong MySQL

Trong bài này bạn sẽ được học After Delete Trigger trong MySQL, đây là loại trigger xảy ra khi bạn thực hiện lệnh delete, và nó sẽ chạy sau khi hệ thống chạy lênh delete đó thành công.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Giới thiệu After Delete Trigger trong MySQL

Về công dụng thì nó giống như Before Delete, điểm khác duy nhất là nó hoạt động sau khi lệnh delete hoàn thành, còn before delete thì nó hoạt động trước khi lệnh delete thục hiện.

Cú pháp như sau:

CREATE TRIGGER trigger_name
    AFTER DELETE
    ON table_name FOR EACH ROW
trigger_body;

Trong đó trigger_name là tên của trigger, table_name chính là tên của table mà bạn muốn trigger này gắn vào.

Bài viết này được đăng tại [free tuts .net]

Nếu bạn có nhiều dòng SQL bên trong phần trigger_body thì hãy đặt nó trong cặp BEGIN .. END.

DELIMITER $$

CREATE TRIGGER trigger_name
    AFTER DELETE
    ON table_name FOR EACH ROW
BEGIN
    -- statements
END$$    

DELIMITER ;

Tương tự như Before Trigger, bạn có thể truy xuất đến giá trị của OLD nhưng không thể thay đổi chúng. Riêng NEW thì không có bởi vi đây là lệnh delete.

MySQL AFTER DELETE Trigger png

2. Vi dụ After Delete Trigger trong MySQL

Trước tiên hãy tạo một vài table để thực hành.

Tạo table

Hãy tạo một table Salaries có cấu trúc đơn giản như sau:

DROP TABLE IF EXISTS Salaries;

CREATE TABLE Salaries (
    employeeNumber INT PRIMARY KEY,
    salary DECIMAL(10,2) NOT NULL DEFAULT 0
);

Nó chỉ có 2 field như sau:

  • employeeNumber là mã số nhân viên
  • salary là mức lương của nhân viên

Hãy thêm một vài dòng dữ liệu.

INSERT INTO Salaries(employeeNumber,salary)
VALUES
    (1002,5000),
    (1056,7000),
    (1076,8000);

Bây giờ tạo thêm một table SalaryBudgets dùng để lưu trữ tổng số lương của tất cả nhân viên.

INSERT INTO SalaryBudgets(total)
SELECT SUM(salary) 
FROM Salaries;

Đúng ra ta sẽ tạo After Insert Trigger để bắt sự kiện khi thêm nhân viên thì update tổng số mức lương trong bảng SalaryBudgets, hoặc After Update Trigger cho trường hợp bạn chỉnh mức lương. Vì để bài toán đơn giản hơn nên mình sẽ thêm thủ công như sau:

INSERT INTO SalaryBudgets(total)
SELECT SUM(salary) 
FROM Salaries;

Thử truy vấn xem tổng số lương là bao nhiêu nhé. Nếu đúng ra thì sẽ là 5000 + 7000 + 8000 = 20000.

SELECT * FROM SalaryBudgets;        

MySQL AFTER DELETE Trigger Example png

Quá chuẩn!

Tạo trigger

Mình sẽ viết trigger khi xóa một nhân viên trong bảng Salaries thì update tổng số mức lương ở bảng SalaryBudgets.

CREATE TRIGGER after_salaries_delete
AFTER DELETE
ON Salaries FOR EACH ROW
UPDATE SalaryBudgets 
SET total = total - old.salary;

Rất đơn giản nên mình không giải thích thêm nhé.

Chạy thử trigger

Trước tiên hãy thử xóa một nhân viên có id = 1002 xem thế nào nhé.

DELETE FROM Salaries
WHERE employeeNumber = 1002;

Hãy xem tổng số mức lương ở bảng SalaryBudgets có được update không nhé.

SELECT * FROM SalaryBudgets;    

MySQL AFTER DELETE Trigger Example 2 png

Kết quả 15000 là đúng rồi, tại vì nhân viên đã xóa có mức lương là 5000.

Bây giờ hãy thử xóa tất cả 2 nhân viên còn lại xem tổng số có update về 0 không nhé.

DELETE FROM Salaries;

Xem kết quả thế nào.

SELECT * FROM SalaryBudgets;    

Bạn hãy thử chạy và xem thành quả nhé, mình chắc chắn nó đã về zero rồi :)

Như vậy là mình đã hướng dẫn xong cách sử dụng After Delete Trigger trong MySQL. Hy vọng bài cuối cùng trong loạt tutorials về trigger này sẽ giúp bạn an tâm hơn về kiến thức của mình.

Cùng chuyên mục:

Hàm ENCRYPT trong MySQL

Hàm ENCRYPT trong MySQL

Cách sử dụng ENCRYPT trong MySQL

Hàm MD5 trong MySQL

Hàm MD5 trong MySQL

Cách sử dụng MD5 trong MySQL

Hàm OLD_PASSWORD trong MySQL

Hàm OLD_PASSWORD trong MySQL

Cách sử dụng OLD_PASSWORD trong MySQL

Hàm PASSWORD trong MySQL

Hàm PASSWORD trong MySQL

Cách sử dụng PASSWORD trong MySQL

Hàm ASCII trong MySQL

Hàm ASCII trong MySQL

Cách sử dụng ASCII trong MySQL

Hàm CHAR_LENGTH trong MySQL

Hàm CHAR_LENGTH trong MySQL

Cách sử dụng CHAR_LENGTH trong MySQL

Hàm CHARACTER_LENGTH trong MySQL

Hàm CHARACTER_LENGTH trong MySQL

Cách sử dụng CHARACTER_LENGTH trong MySQL

Hàm CONCAT trong MySQL

Hàm CONCAT trong MySQL

Cách sử dụng CONCAT trong MySQL

Hàm CONCAT_WS trong MySQL

Hàm CONCAT_WS trong MySQL

Cách sử dụng CONCAT_WS trong MySQL

Hàm FIELD trong MySQL

Hàm FIELD trong MySQL

Cách sử dụng FIELD trong MySQL

Hàm FIND_IN_SET trong MySQL

Hàm FIND_IN_SET trong MySQL

Cách sử dụng FIND_IN_SET trong MySQL

Hàm FORMAT trong MySQL

Hàm FORMAT trong MySQL

Cách sử dụng FORMAT trong MySQL

Hàm INSERT trong MySQL

Hàm INSERT trong MySQL

Cách sử dụng INSERT trong MySQL

Hàm INSTR trong MySQL

Hàm INSTR trong MySQL

Cách sử dụng INSTR trong MySQL

Hàm LCASE trong MySQL

Hàm LCASE trong MySQL

Cách sử dụng LCASE trong MySQL

Hàm LEFT trong MySQL

Hàm LEFT trong MySQL

Cách sử dụng LEFT trong MySQL

Hàm LENGTH trong MySQL

Hàm LENGTH trong MySQL

Cách sử dụng LENGTH trong MySQL

Hàm LOCATE trong MySQL

Hàm LOCATE trong MySQL

Cách sử dụng LOCATE trong MySQL

Hàm LOWER trong MySQL

Hàm LOWER trong MySQL

Cách sử dụng LOWER trong MySQL

Hàm LPAD trong MySQL

Hàm LPAD trong MySQL

Cách sử dụng LPAD trong MySQL

Top