การจัดการรายการเปลี่ยนแปลงใน SQL

ภาษาในการจัดการฐานข้อมูล ดังเช่น SQL มีโครงสร้างที่ใช้ในการจัดการกับรายการเปลี่ยนแปลงเพื่ออำนวยความสะดวกให้กับโปรแกรมเมอร์ โดยที่โปรแกรมเมอร์จะต้องกำหนดลำดับการทำรายการเปลี่ยนแปลงซึ่งจะถูกนำไปปฏิบัติโดยระบบจัดการฐานข้อมูลที่ไม่มีผลเสียต่อความมั่นคงของข้อมูล

รายการเปลี่ยนแปลงใน SQL จะต้องสามารถจัดลำดับการทำงานเสมือนได้ และสามารถกู้คืนได้เมื่อเกิดความผิดพลาดใดๆ ขึ้น คำสั่งในภาษา SQL ที่ใช้ในการจัดการกับรายการเปลี่ยนแปลงโดยตรงได้แก่คำสั่งที่ใช้บอกจุดสิ้นสุดของรายการเปลี่ยนแปลง คือ COMMIT และ ROLLBACK ทั้งสองคำสั่งมีผลต่อการสิ้นสุดรายการเปลี่ยนแปลงที่แตกต่างกัน กล่าวได้ดังนี้

SQL ไม่มีคำสั่งที่ใช้ในการกำหนดจุดเริ่มต้นของรายการเปลี่ยนแปลงโดยตรง การเริ่มต้นทำรายการเปลี่ยนแปลงจะถูกทำโดยอ้อมโดยการทำคำสั่ง SQL ใดๆ แต่ทุกครั้งที่มีการทำรายการเปลี่ยนแปลงจะต้องมีการใช้คำสั่งในการกำหนดจุดสิ้นสุดของรายการเปลี่ยนแปลงดังเช่นสองคำสั่งที่กล่าวข้างต้น นอกจากนี้ SQL ยังมีคำสั่งที่ใช้ในการกำหนดคุณลักษณะของรายการเปลี่ยนแปลง เช่น สิทธิการเข้าถึง และระดับของความมั่นคง

คำสั่งในภาษา SQL สามารถแบ่งออกได้เป็นหลายประเภท ได้แก่

    1. คำสั่งที่ใช้กำหนดค่าให้กับข้อมูล (Data Definition Language commands)
    2. คำสั่งที่ใช้จัดการกับข้อมูล (Data Manipulation Language commands)
    3. คำสั่งที่ใช้ในการควบคุมรายการเปลี่ยนแปลง (Transaction Control commands)
    4. คำสั่งที่ใช้ในการควบคุมช่วงการทำงาน (Session Control commands)

คำสั่ง COMMIT และ ROLLBACK เป็นคำสั่งที่อยู่ในประเภทที่ใช้ในการควบคุมรายการเปลี่ยนแปลง

ดังที่ได้กล่าวข้างต้นว่าการทำรายการเปลี่ยนแปลงใน SQL สามารถกำหนดคุณลักษณะของรายการเปลี่ยนแปลงได้ คุณลักษณะหนึ่งก็คือ สิทธิของการเข้าถึง อันได้แก่ อ่านอย่างเดียว (read only) หรือ อ่านและเขียน (read write) ถ้าไม่กำหนดสิทธิที่จะถูกใช้ก็คือ อ่านและเขียน

SQL-92 ได้กำหนดไว้ว่ารายการเปลี่ยนแปลงสามารถถูกกระทำได้ถึงแม้ว่าลำดับของรายการเปลี่ยนแปลงจะไม่ใช่ลำดับเสมือน (nonserializable) เช่น การทำรายการเปลี่ยนแปลงในระดับ read uncommitted ซึ่งอนุญาติให้รายการเปลี่ยนแปลงสามารถอ่านข้อมูลที่ยังไม่ถูก commit ได้ การกำหนดคุณลักษณะนี้จะสามารถทำได้เมื่อรายการเปลี่ยนแปลงนั้นสามารถทำได้โดยใช้ข้อมูลโดยประมาณที่ไม่ต้องการความถูกต้องแม่นยำสูงมากนัก

ระดับของความมั่นคงที่สามารถกำหนดได้ใน SQL-92 ได้แก่