ฉันควรเพิ่ม SET NOCOUNT ON ให้กับตัวกระตุ้นทั้งหมดของฉันหรือไม่?


21

เป็นความรู้ทั่วไปที่คุณควรมี

SET NOCOUNT ON   

โดยค่าเริ่มต้นเมื่อสร้างขั้นตอนการจัดเก็บใหม่

Microsoft ได้เปลี่ยนเทมเพลตเริ่มต้นเพื่อรวมสิ่งนี้ในปี 2012 ฉันคิดว่านี่จะเป็นสิ่งเดียวกันสำหรับทริกเกอร์ แต่ก็ไม่ได้รวมอยู่ในเทมเพลต

มันเป็นความตั้งใจหรือเป็นเพียงการกำกับดูแล?


1
หากคุณเคยแก้ไขค่าผ่านทางเครื่องมือแก้ไขตาราง SSMS สิ่งนี้เป็นสิ่งจำเป็นสำหรับทริกเกอร์มิฉะนั้นข้อความนับแถวพิเศษจากทริกเกอร์ทำให้สับสน
Martin Smith

มันเป็นการกำกับดูแลที่มีแนวโน้มมากที่สุด โปรดดูstackoverflow.com/questions/1483732/set-nocount-on-usageโปรด
gbn

คำตอบ:


24

โดยส่วนตัวแล้วฉันอยากจะแนะนำ - ฉันไม่สามารถนึกถึงเหตุผลที่ไม่ควรทำเว้นแต่คุณจะมีทริกเกอร์ที่คุณต้องการเรียกความจริงที่ว่ามันทำงานพิเศษเพิ่มเติมเบื้องหลัง

ฉันเขียนบทความสั้น ๆ เกี่ยวกับสิ่งที่ต้องดูเมื่อเขียนทริกเกอร์และนี่คือหนึ่งในนั้น:
http://dave.brittens.org/2012/03/29/writing-well-behaved-triggers/

tl; dr เวอร์ชั่น:

  1. ตัดเรื่องไร้สาระ ใช้ NOCOUNT
  2. ตรวจสอบให้แน่ใจว่าทริกเกอร์ของคุณสามารถจัดการได้หลายแถว
  3. ป้องกันการทริกเกอร์และการเรียกซ้ำแบบไม่ จำกัด
  4. หลีกเลี่ยงประสิทธิภาพที่น่ากลัวของตารางเสมือน INSERTED และ DELETED

URL ล้าสมัย นี่คือ URL ที่อัปเดต: dave.brittens.org/blog/writing-well-behaved-triggers.html
Jonathon Watney

จับดี. ฉันเพิ่งปรับปรุงไซต์ของฉันเป็น Pelican เมื่อสองสามสัปดาห์ก่อน ;)
db2
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.