ทริกเกอร์ของฐานข้อมูล หรือเรียกสั้นๆ ว่า ทริกเกอร์ หมายถึงขั้นตอนที่เก็บไว้ซึ่งดำเนินการเป็นการตอบสนองต่อกิจกรรมเหตุการณ์ภายในวัตถุฐานข้อมูลที่กำหนด
สิ่งนี้แตกต่างจากขั้นตอนการจัดเก็บมาตรฐาน ซึ่งต้องมีการร้องขออย่างชัดเจนจากผู้ใช้ เนื่องจากทริกเกอร์เป็นแบบอัตโนมัติ ทริกเกอร์จึงถูกทริกเกอร์หรือเริ่มทำงานเมื่อเหตุการณ์ที่ระบุเกิดขึ้น โดยไม่คำนึงถึงสถานะของผู้ใช้หรือเซิร์ฟเวอร์ที่เชื่อมต่อ
ฐานข้อมูลเชิงสัมพันธ์ส่วนใหญ่สนับสนุนการใช้ทริกเกอร์เพื่อทำงานอัตโนมัติ เช่น การป้องกันธุรกรรมที่ไม่ถูกต้อง การบันทึกเหตุการณ์ การดึงข้อมูลและการบันทึกสถิติการเข้าถึงตาราง และอื่นๆ
เมื่อสร้างทริกเกอร์แล้ว ทริกเกอร์จะทำงานทุกครั้งที่มีเหตุการณ์ที่เกี่ยวข้องเกิดขึ้น อย่างไรก็ตาม คุณอาจต้องการป้องกันไม่ให้ทริกเกอร์ทำงานชั่วคราวหรือถาวร นี่คือที่มาของคุณสมบัติการปิดทริกเกอร์
โพสต์นี้จะหารือเกี่ยวกับขั้นตอนที่ง่ายและรวดเร็วในการปิดใช้งานทริกเกอร์ภายในฐานข้อมูล Oracle หากคุณยังใหม่กับทริกเกอร์ของ Oracle และต้องการทราบวิธีสร้าง ให้ตรวจสอบลิงก์ต่อไปนี้:
https://linuxhint.com/oracle-create-trigger
การสร้างทริกเกอร์ทดสอบ
ก่อนที่เราจะพูดถึงวิธีการปิดใช้งานทริกเกอร์ ให้เราตั้งค่าทริกเกอร์ตัวอย่างเพื่อจุดประสงค์ในการสาธิต
บันทึก : ส่วนนี้ไม่ครอบคลุมถึงวิธีการกำหนดหรือใช้ทริกเกอร์ฐานข้อมูล
เราต้องการสร้างทริกเกอร์ที่บันทึกกิจกรรมของผู้ใช้หลังจากการดำเนินการลบ ตัวอย่างเช่น สมมติว่าเรามีตาราง sample_data ที่มีข้อมูลดังที่แสดง:
ก่อนอื่นเราต้องสร้างตารางที่เราจัดเก็บบันทึกสำหรับทุกกิจกรรมการลบ
สคีมาของตารางมีดังนี้:
สร้างตาราง sample_data_logs(หมายเลขประจำตัว,
first_name varchar2(50),
ip_address varchar2(20),
btc_address varchar2(50),
credit_card varchar2(50),
ตัวระบุ varchar2(40),
วันที่ delete_date,
ถูกลบโดย varchar2(20)
);
ต่อไป เราต้องกำหนดทริกเกอร์ที่ดำเนินการหลังจากเหตุการณ์การลบ คำจำกัดความของทริกเกอร์มีดังต่อไปนี้:
สร้างหรือแทนที่ทริกเกอร์ log_userหลังจากลบ
บน sample_data
สำหรับแต่ละแถว
ประกาศ
action_username varchar2(20);
เริ่ม
เลือกผู้ใช้เป็น action_username จากคู่;
ใส่ใน sample_data_logs
ค่า (:OLD.id,
:OLD.first_name,
:OLD.ip_address,
:OLD.btc_address,
:OLD.credit_card,
:OLD.identifier,
ซิสเดท,
action_username);
จบ;
ในการทดสอบทริกเกอร์ ให้เราทำการลบออกจากตาราง sample_data ดังที่แสดง:
ลบออกจาก sample_data โดยที่ id = 1;สุดท้าย เราสามารถตรวจสอบตารางบันทึกเพื่อให้แน่ใจว่าการดำเนินการลบได้รับการบันทึก:
เลือก * จาก sample_data_logs;เอาท์พุต:
อย่างที่เราเห็น ตารางมีการป้อนข้อมูลก่อนหน้านี้ก่อนการลบ เช่นเดียวกับชื่อผู้ใช้ที่ทำกิจกรรมการลบและเวลาของการลบ
ในส่วนต่อไปนี้ เราจะสาธิตวิธีปิดใช้งานทริกเกอร์ก่อนหน้า ก่อนดำเนินการดังกล่าว ตรวจสอบให้แน่ใจว่าทริกเกอร์เป้าหมายของคุณใช้งานได้ และคุณมีสิทธิ์เพียงพอในการเปิดหรือปิดใช้งาน
ปิดใช้งานทริกเกอร์โดยใช้ PL/SQL
วิธีแรกและตรงไปตรงมาที่สุดในการปิดทริกเกอร์คือการใช้คำสั่ง SQL โชคดีที่ Oracle ให้คำสั่ง ALTER TRIGGER แก่เราซึ่งมีไวยากรณ์ดังต่อไปนี้:
เปลี่ยนทริกเกอร์ trigger_name ปิดใช้งาน;ตัวอย่างเช่น หากต้องการปิดใช้งานทริกเกอร์ log_user ที่เราสร้างขึ้นก่อนหน้านี้ เราสามารถเรียกใช้ดังต่อไปนี้:
เปลี่ยนทริกเกอร์ log_user ปิดการใช้งาน;เมื่อดำเนินการแล้ว ทริกเกอร์จะไม่เก็บสำเนาของข้อมูลเก่าและผู้ใช้ที่ดำเนินการลบอีกต่อไป ดังที่แสดงต่อไปนี้
ลบออกจาก sample_data โดยที่ id = 2;ตรวจสอบบันทึก:
เลือก * จาก sample_data_logs;เอาท์พุต:
อย่างที่เห็น เรายังมีเพียงบันทึกเดียว
ปิดใช้งานทริกเกอร์โดยใช้ SQL Developer
เราสามารถใช้ยูทิลิตี้ SQL Developer เพื่อปิดทริกเกอร์ในส่วนต่อประสานกราฟิก เริ่มต้นด้วยการล็อกอินเข้าสู่ SQL Developer
ไปที่ส่วน 'ทริกเกอร์':
ขยายไดเร็กทอรีทริกเกอร์และค้นหาทริกเกอร์ที่คุณต้องการปิดใช้งาน คลิกขวาที่ชื่อทริกเกอร์แล้วเลือก 'ปิดใช้งาน'
ยืนยันการดำเนินการ 'ปิดการใช้งาน' และคลิก 'นำไปใช้'
เมื่อปิดใช้งานแล้ว Oracle จะทำให้ทริกเกอร์เป็นสีเทา ซึ่งระบุว่าไม่ได้ใช้งาน
บทสรุป
บทความนี้กล่าวถึงวิธีปิดใช้งานทริกเกอร์ Oracle โดยใช้คำสั่ง PL/SQL และยูทิลิตี้ SQL Developer