นี่เป็นคำถามทั่วไปมากกว่า แต่แรงจูงใจสำหรับคำถามนี้เป็นปัญหาที่ฉันประสบขณะใช้ SQL Server
ฉันมีทริกเกอร์นี้แนบกับเหตุการณ์แทรกบนตารางที่มีตรรกะบางอย่างซึ่งเป็นผลข้างเคียงจะเพิ่มข้อผิดพลาดหากไม่มีแถวถูกแทรก เมื่อตรวจสอบเพิ่มเติมฉันพบว่ามีการยิงไกแม้จะไม่มีการแทรกแถว
ภาษาที่ใช้ในMicrosoft Docs บนทริกเกอร์ DMLดูเหมือนจะขัดแย้งกับพฤติกรรมนี้:
ทริกเกอร์ DML เป็นขั้นตอนการจัดเก็บชนิดพิเศษที่จะมีผลโดยอัตโนมัติเมื่อมีเหตุการณ์ DML เกิดขึ้นซึ่งมีผลต่อตารางหรือมุมมองที่กำหนดในทริกเกอร์
นี่เป็นพฤติกรรมเริ่มต้นใน DBMS หรือไม่ มีเหตุผลบางอย่างในการเริ่มต้นทริกเกอร์เมื่อไม่มีแถวที่ได้รับผลกระทบหรือไม่?