หากคุณไม่ย้อนกลับธุรกรรมจะยังคงมีการเปลี่ยนแปลงหรือไม่


10

สมมติว่าฉันกำลังเรียกใช้แบบสอบถาม

begin tran

update users
set name = 'Jimmy'
where name = 'john'

หากฉันไม่ย้อนกลับธุรกรรมการเปลี่ยนแปลงเหล่านี้จะยังคงเกิดขึ้นมันจะเกิดข้อผิดพลาดหรือจะทำหน้าที่เป็นการย้อนกลับหรือไม่


ฉันเดาว่าขึ้นอยู่กับพฤติกรรมของซอฟต์แวร์ไคลเอ็นต์ที่คุณใช้เพื่อเรียกใช้คำสั่งเหล่านี้หรือแอปพลิเคชันที่ฝังอยู่ บางคนอาจกระทำอัตโนมัติหากกำหนดค่า (SSMS จะทำตามค่าเริ่มต้น)
mustaccio

3
ธุรกรรมที่ประกาศอย่างชัดแจ้งไม่กระทำโดยอัตโนมัติ ตั้งแต่ Josh ได้ประกาศการเริ่มต้นของการทำธุรกรรมมันจะทำงานตรงตามที่ Justin Cave ได้รับคำตอบ
เดฟ

คำตอบ:


16

คุณต้องเข้าใจว่าธุรกรรมคืออะไร - เป็นหน่วยงานเดียว มันคือทั้งหมดหรือไม่มีอะไร (ตามคุณสมบัติของกรด ) และสิ่งนี้รับประกันความสอดคล้องของฐานข้อมูล

หากฉันไม่ย้อนกลับธุรกรรมการเปลี่ยนแปลงเหล่านี้จะยังคงดำเนินต่อไป

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

หากคุณไม่ยอมรับการทำธุรกรรมของคุณจะยังคงเปิดอยู่โดยไม่มีกำหนดซึ่งคุณสามารถเห็นsys.dm_tran_active_transactions / sys.dm_tran_database_transactions / sys.dm_tran_session_transactionsหรือใช้งานDBCC OPENTRANได้

นอกจากนี้สิ่งที่คุณได้เริ่มต้นนั้นเป็นธุรกรรมที่ชัดเจนซึ่งควรจะจบลงอย่างชัดเจนด้วยคำสั่ง COMMIT หรือ ROLLBACK

อ่านเพิ่มเติม - มันเป็นวิธีปฏิบัติที่ไม่ดีที่จะสร้างธุรกรรมอยู่เสมอหรือไม่


@ JoshStevenson ฉันคิดว่ามันคุ้มค่าในขณะที่อ่านเกี่ยวกับAtomic Operationsในบริบทของฐานข้อมูล
Nelz

12

หากคุณไม่ยอมรับและไม่ทำธุรกรรมย้อนกลับธุรกรรมจะยังคงมีอยู่อย่างไม่มีกำหนด มันจะยังคงล็อคที่อาจปิดกั้นช่วงอื่น ๆ จนกว่าคุณจะจบการทำธุรกรรมผ่านcommitหรือrollbackหรือจนกว่า DBA มาพร้อมและฆ่าเซสชั่น หาก DBA ฆ่าเซสชันพวกเขาจะออกโรลแบ็คสำหรับสิ่งนี้และธุรกรรมเปิดอื่น ๆ โดยปริยาย


นี่คือคำตอบที่เหมาะสม หากไม่มีข้อมูลชิ้นนี้ฉันไม่จำเป็นต้องใช้ทั้งคำสั่ง COMMIT และ ROLLBACK
Tarec

1

จะไม่มีการเปลี่ยนแปลงจนกว่าจะมีการทำธุรกรรมและจะไม่มีการเปลี่ยนแปลงใด ๆ หรือทั้งหมดดังที่ได้กล่าวไว้ข้างต้น

Atomicity เป็นเหตุผลที่อยู่เบื้องหลังสิ่งนี้คุณสามารถตรวจสอบคุณสมบัติธุรกรรม ACID ซึ่งเป็นคุณสมบัติพื้นฐานที่ระบบฐานข้อมูลติดตาม

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