الفرق بين المراجعتين ل"SQL/rollback"

من موسوعة حسوب
< SQL
اذهب إلى التنقل اذهب إلى البحث
 
ط (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}')
 
سطر 84: سطر 84:
 
* [https://sqlite.org/lang_transaction.html توثيق ROLLBACK في محرك SQLite]
 
* [https://sqlite.org/lang_transaction.html توثيق ROLLBACK في محرك SQLite]
 
* [https://docs.microsoft.com/en-us/sql/t-sql/language-elements/rollback-transaction-transact-sql توثيق ROLLBACK في محرك SQLServer]
 
* [https://docs.microsoft.com/en-us/sql/t-sql/language-elements/rollback-transaction-transact-sql توثيق ROLLBACK في محرك SQLServer]
[[تصنيف:SQL]]
+
[[تصنيف:SQL|{{SUBPAGENAME}}]]
[[تصنيف:SQL Transactions]]
+
[[تصنيف:SQL Transactions|{{SUBPAGENAME}}]]

المراجعة الحالية بتاريخ 15:44، 28 يناير 2018

يستخدم هذا الأمر لإلغاء العمليات المُجراة على قاعدة البيانات مما يعني تجاهل التغييرات التي طرأت عليها.

صيغة الأمر:

ROLLBACK [TRANSACTION];

وفي محركات SQLite و MySQL و PostgreSQL تمكن العودة إلى نقطة محددة حُفظت مسبقًا، وذلك عبر الأمر:

ROLLBACK TO SAVEPOINT savePointName;

إذ إن savePointName هو اسم نقطة الحفظ التي سيُرجع لها بتجاهل أية تغييرات طرأت بعدها.

مثال

إن كان جدول الزبائن customers موجودًا في قاعدة البيانات على النحو الآتي:

Bill OrderID FullName CustomerID
160 0291 Abd al-Salam Hadi 1156
170 0302 Ahmad Mostafa 1157
210 0203 Reem Hammad 1158
350 0294 Abd Allah Sadiq 1159
185 0255 Raghad al-Hamdan 1160
165 0276 Abd al-Razzaq Salloum 1161
175 0247 Hussam Siraj 1162

فعند تطبيق الاستعلام الآتي:

BEGIN TRANSACTION;  
DELETE FROM customers
WHERE Bill>200;

إذ إن BEGIN TRANSACTION تبدأ بالعملية التي ستحذف السجلات التي قيمة فاتورتها أكبر من 200 (عدد السجلات المحذوفة 2)، وللتراجع عن هذه التعديلات ليُعاد الجدول كما كان يُستخدم الأمر:

ROLLBACK;

التوافقية

SQLServer SQLite Oracle PostgreSQL MySQL
نعم نعم نعم نعم نعم

مصادر