PostgreSQL ทริกเกอร์: สร้าง แสดงรายการ & วางพร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
PostgreSQL ทริกเกอร์คือฟังก์ชันที่จะทำงานโดยอัตโนมัติเมื่อเกิดเหตุการณ์ INSERT, UPDATE หรือ DELETE บนตาราง ทำให้ฐานข้อมูลสามารถบังคับใช้กฎ บันทึกการเปลี่ยนแปลง และตรวจสอบข้อมูลได้โดยไม่ต้องเขียนโค้ดแอปพลิเคชันเพิ่มเติม

ทริกเกอร์คืออะไร PostgreSQL?
A PostgreSQL ทริกเกอร์ ทริกเกอร์คือฟังก์ชันที่จะทำงานโดยอัตโนมัติเมื่อเกิดเหตุการณ์ในฐานข้อมูลกับอ็อบเจ็กต์ในฐานข้อมูล เช่น ตาราง ตัวอย่างของเหตุการณ์ในฐานข้อมูลที่สามารถกระตุ้นทริกเกอร์ได้ ได้แก่ INSERT, UPDATE, DELETE เป็นต้น นอกจากนี้ เมื่อคุณสร้างทริกเกอร์สำหรับตารางแล้ว ทริกเกอร์จะถูกลบโดยอัตโนมัติเมื่อตารางนั้นถูกลบ
วิธีการใช้ทริกเกอร์ PostgreSQL?
สามารถกำหนดทริกเกอร์ด้วยตัวดำเนินการ FOR EACH ROW ในระหว่างการสร้างได้ ทริกเกอร์ดังกล่าวจะถูกเรียกใช้หนึ่งครั้งสำหรับแต่ละแถวที่ถูกแก้ไขโดยการดำเนินการนั้น นอกจากนี้ยังสามารถกำหนดทริกเกอร์ด้วยตัวดำเนินการ FOR EACH STATEMENT ในระหว่างการสร้างได้ ทริกเกอร์นี้จะถูกเรียกใช้เพียงครั้งเดียวสำหรับการดำเนินการเฉพาะนั้น ๆ
PostgreSQL สร้างทริกเกอร์
ในการสร้างทริกเกอร์ เราใช้ฟังก์ชัน CREATE TRIGGER นี่คือไวยากรณ์สำหรับฟังก์ชัน:
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name ON table-name [ -- Trigger logic ];
ชื่อทริกเกอร์คือชื่อของทริกเกอร์
BEFORE, AFTER และ INSTEAD OF คือคีย์เวิร์ดที่กำหนดว่าจะเรียกใช้ทริกเกอร์เมื่อใด
ชื่อเหตุการณ์คือชื่อของเหตุการณ์ที่จะทำให้ทริกเกอร์ถูกเรียกใช้ นี้สามารถ INSERT, อัปเดต, ลบ ฯลฯ
ชื่อตารางคือชื่อของตารางที่จะสร้างทริกเกอร์
หากจะต้องสร้างทริกเกอร์สำหรับการดำเนินการ INSERT เราจะต้องเพิ่มพารามิเตอร์ชื่อคอลัมน์ ON
รูปแบบประโยคต่อไปนี้แสดงให้เห็นสิ่งนี้:
CREATE TRIGGER trigger-name AFTER INSERT ON column-name ON table-name [ -- Trigger logic ];
PostgreSQL สร้างตัวอย่างทริกเกอร์
เราจะใช้ตารางราคาที่ระบุด้านล่าง:
ราคา:
ให้เราสร้างตารางใหม่ Price_Audits ซึ่งเราจะบันทึกการเปลี่ยนแปลงที่ทำกับตารางราคา:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL );
ตอนนี้เราสามารถกำหนดฟังก์ชันใหม่ชื่อ auditfunc ได้:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql;
ฟังก์ชันด้านบนจะแทรกบันทึกลงในตาราง Price_Audits รวมถึงรหัสแถวใหม่และเวลาที่สร้างบันทึก
ตอนนี้เรามีฟังก์ชันทริกเกอร์แล้ว เราควรผูกมันเข้ากับตารางราคาของเรา เราจะตั้งชื่อทริกเกอร์ว่า price_trigger ก่อนที่จะมีการสร้างเรคอร์ดใหม่ ฟังก์ชันทริกเกอร์จะถูกเรียกใช้งานโดยอัตโนมัติเพื่อบันทึกการเปลี่ยนแปลง นี่คือทริกเกอร์:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc();
ให้เราแทรกบันทึกใหม่ลงในตารางราคา:
INSERT INTO Price VALUES (3, 400);
ตอนนี้เราได้เพิ่มข้อมูลลงในตาราง Price แล้ว ข้อมูลควรจะถูกเพิ่มลงในตาราง Price_Audits ด้วยเช่นกัน เนื่องจากทริกเกอร์ที่เราสร้างไว้ ลองตรวจสอบดู:
SELECT * FROM Price_Audits;
สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:
ทริกเกอร์ทำงานได้สำเร็จ
PostgreSQL รายการทริกเกอร์
ทริกเกอร์ทั้งหมดที่คุณสร้างขึ้น PostgreSQL จะถูกเก็บไว้ในตาราง pg_trigger หากต้องการดูรายการทริกเกอร์ที่คุณมี ฐานข้อมูลค้นหาตารางโดยการรันคำสั่ง SELECT ดังที่แสดงด้านล่าง:
SELECT tgname FROM pg_trigger;
สิ่งนี้ส่งคืนสิ่งต่อไปนี้:
คอลัมน์ tgname ของตาราง pg_trigger หมายถึงชื่อของทริกเกอร์
PostgreSQL ดรอปทริกเกอร์
เมื่อไม่ต้องการใช้งานตัวกระตุ้นอีกต่อไป คุณสามารถลบออกได้ง่ายๆ เช่นกัน วิธีการลบตัวกระตุ้น PostgreSQL ทริกเกอร์ เราใช้คำสั่ง DROP TRIGGER โดยมีรูปแบบดังต่อไปนี้:
DROP TRIGGER [IF EXISTS] trigger-name
ON table-name [ CASCADE | RESTRICT ];
พารามิเตอร์ชื่อทริกเกอร์หมายถึงชื่อของทริกเกอร์ที่จะถูกลบ
ชื่อตารางหมายถึงชื่อของตารางที่ต้องการลบทริกเกอร์
ส่วนคำสั่ง IF EXISTS พยายามลบทริกเกอร์ที่มีอยู่ หากคุณพยายามลบทริกเกอร์ที่ไม่มีอยู่โดยไม่ใช้ส่วนคำสั่ง IF EXISTS คุณจะได้รับข้อผิดพลาด
ตัวเลือก CASCADE จะช่วยให้คุณวางวัตถุทั้งหมดที่ขึ้นอยู่กับทริกเกอร์โดยอัตโนมัติ
หากคุณใช้ตัวเลือก RESTRICT ทริกเกอร์จะไม่ถูกลบหากออบเจ็กต์ขึ้นอยู่กับทริกเกอร์
ตัวอย่างเช่น:
หากต้องการลบทริกเกอร์ที่ชื่อ example_trigger บนตาราง Company ให้รันคำสั่งต่อไปนี้:
DROP TRIGGER example_trigger IF EXISTS
ON Company;
การใช้งาน pgAdmin
ต่อไปนี้เรามาดูกันว่าการดำเนินการทั้งสามอย่างนี้ทำได้อย่างไรโดยใช้ pgAdmin
วิธีการสร้างทริกเกอร์ใน PostgreSQL โดยใช้ pgAdmin
ต่อไปนี้คือวิธีการสร้างทริกเกอร์ใน PostgreSQL ใช้ pgAdmin:
ขั้นตอนที่ 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
เปิด pgAdmin และเข้าสู่ระบบบัญชีของคุณโดยใช้ข้อมูลประจำตัวของคุณ
ขั้นตอนที่ 2) สร้างฐานข้อมูลสาธิต
- จากแถบนำทางด้านซ้าย คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอนที่ 3) พิมพ์แบบสอบถาม
ในการสร้างตาราง Price_Audits ให้พิมพ์คำสั่ง SQL ลงในตัวแก้ไข:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL )
ขั้นตอนที่ 4) ดำเนินการแบบสอบถาม
คลิกปุ่มดำเนินการ
ขั้นตอนที่ 5) เรียกใช้ไฟล์ Code สำหรับฟังก์ชันการตรวจสอบ
เรียกใช้โค้ดต่อไปนี้เพื่อกำหนดฟังก์ชัน auditfunc:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql
ขั้นตอนที่ 6) เรียกใช้ไฟล์ Code เพื่อสร้างทริกเกอร์
รันโค้ดต่อไปนี้เพื่อสร้างทริกเกอร์ price_trigger:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc()
ขั้นตอนที่ 7) แทรกบันทึกใหม่
- รันคำสั่งต่อไปนี้เพื่อแทรกข้อมูลใหม่ลงในตารางราคา:
INSERT INTO Price VALUES (3, 400)
- รันคำสั่งต่อไปนี้เพื่อตรวจสอบว่ามีการเพิ่มระเบียนเข้าไปในตาราง Price_Audits หรือไม่:
SELECT * FROM Price_Audits
สิ่งนี้ควรส่งคืนสิ่งต่อไปนี้:
ขั้นตอนที่ 8) ตรวจสอบเนื้อหาของตาราง
เรามาตรวจสอบเนื้อหาในตาราง Price_Audits กันเถอะ
รายชื่อทริกเกอร์โดยใช้ pgAdmin
ขั้นตอน 1) รันคำสั่งต่อไปนี้เพื่อตรวจสอบทริกเกอร์ในฐานข้อมูลของคุณ:
SELECT tgname FROM pg_trigger
สิ่งนี้ส่งคืนสิ่งต่อไปนี้:
หล่นping ทริกเกอร์ที่ใช้ pgAdmin
หากต้องการลบทริกเกอร์ที่ชื่อ example_trigger บนตาราง Company ให้รันคำสั่งต่อไปนี้:
DROP TRIGGER example_trigger IF EXISTS
ON Company
ดาวน์โหลดฐานข้อมูลที่ใช้ในบทช่วยสอนนี้







