วิธีปิดการใช้งานทริกเกอร์ใน Oracle

Withi Pid Kar Chi Nga Nth Rik Kexr Ni Oracle



ทริกเกอร์ของฐานข้อมูล หรือเรียกสั้นๆ ว่า ทริกเกอร์ หมายถึงขั้นตอนที่เก็บไว้ซึ่งดำเนินการเป็นการตอบสนองต่อกิจกรรมเหตุการณ์ภายในวัตถุฐานข้อมูลที่กำหนด

สิ่งนี้แตกต่างจากขั้นตอนการจัดเก็บมาตรฐาน ซึ่งต้องมีการร้องขออย่างชัดเจนจากผู้ใช้ เนื่องจากทริกเกอร์เป็นแบบอัตโนมัติ ทริกเกอร์จึงถูกทริกเกอร์หรือเริ่มทำงานเมื่อเหตุการณ์ที่ระบุเกิดขึ้น โดยไม่คำนึงถึงสถานะของผู้ใช้หรือเซิร์ฟเวอร์ที่เชื่อมต่อ







ฐานข้อมูลเชิงสัมพันธ์ส่วนใหญ่สนับสนุนการใช้ทริกเกอร์เพื่อทำงานอัตโนมัติ เช่น การป้องกันธุรกรรมที่ไม่ถูกต้อง การบันทึกเหตุการณ์ การดึงข้อมูลและการบันทึกสถิติการเข้าถึงตาราง และอื่นๆ



เมื่อสร้างทริกเกอร์แล้ว ทริกเกอร์จะทำงานทุกครั้งที่มีเหตุการณ์ที่เกี่ยวข้องเกิดขึ้น อย่างไรก็ตาม คุณอาจต้องการป้องกันไม่ให้ทริกเกอร์ทำงานชั่วคราวหรือถาวร นี่คือที่มาของคุณสมบัติการปิดทริกเกอร์



โพสต์นี้จะหารือเกี่ยวกับขั้นตอนที่ง่ายและรวดเร็วในการปิดใช้งานทริกเกอร์ภายในฐานข้อมูล 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