9
แทรกอัปเดต proc ที่จัดเก็บไว้บน SQL Server
ฉันได้เขียน proc ที่เก็บไว้ซึ่งจะทำการอัปเดตหากมีบันทึกอยู่มิฉะนั้นจะทำการแทรก มีลักษณะดังนี้: update myTable set Col1=@col1, Col2=@col2 where ID=@ID if @@rowcount = 0 insert into myTable (Col1, Col2) values (@col1, @col2) ตรรกะของฉันที่อยู่เบื้องหลังการเขียนด้วยวิธีนี้คือการอัปเดตจะทำการเลือกโดยปริยายโดยใช้ where clause และถ้าสิ่งนั้นส่งกลับ 0 ดังนั้นการแทรกจะเกิดขึ้น ทางเลือกอื่นในการทำเช่นนี้คือทำการเลือกจากนั้นขึ้นอยู่กับจำนวนแถวที่ส่งคืนไม่ว่าจะอัปเดตหรือแทรก สิ่งนี้ฉันถือว่าไม่มีประสิทธิภาพเพราะถ้าคุณจะทำการอัปเดตมันจะทำให้เกิดการเลือก 2 ครั้ง (การเรียกเลือกอย่างชัดเจนครั้งแรกและครั้งที่สองโดยนัยในตำแหน่งของการอัปเดต) หาก proc ทำการแทรกก็จะไม่มีความแตกต่างในด้านประสิทธิภาพ ตรรกะของฉันอยู่ที่นี่หรือไม่? นี่เป็นวิธีที่คุณจะรวมส่วนแทรกและอัปเดตลงใน proc ที่จัดเก็บไว้หรือไม่?