ฉันกำลังย้ายระเบียนจากฐานข้อมูลหนึ่งไปยังอีกฐานข้อมูลซึ่งเป็นส่วนหนึ่งของกระบวนการเก็บถาวร ฉันต้องการคัดลอกแถวไปยังตารางปลายทางแล้วลบแถวเดียวกันออกจากตารางต้นฉบับ
คำถามของฉันคือวิธีที่มีประสิทธิภาพที่สุดในการตรวจสอบว่าการแทรกครั้งแรกสำเร็จหรือไม่ก่อนที่จะลบแถว
ความคิดของฉันคือสิ่งนี้ แต่ฉันรู้สึกว่ามีวิธีที่ดีกว่า:
@num_records=select count(ID) from Source_Table where (criteria for eligible rows)
insert * into Destination_Table where (criteria for eligible rows)
if ((select count(ID) from Destination_Table where (criteria) )=@numrecords)
delete * from Source_Table where (criteria)
จะดีกว่า / เป็นไปได้ที่จะรวมเข้ากับฟังก์ชั่น RAISERROR หรือไม่? ขอบคุณ!