الفرق بين المراجعتين لصفحة: «SQL/start transaction»
< SQL
لا ملخص تعديل |
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
||
سطر 85: | سطر 85: | ||
* [https://sqlite.org/lang_transaction.html توثيق BEGIN TRANSACTION في محرك SQLite] | * [https://sqlite.org/lang_transaction.html توثيق BEGIN TRANSACTION في محرك SQLite] | ||
* [https://docs.microsoft.com/en-us/sql/t-sql/language-elements/rollback-transaction-transact-sql توثيق BEGIN TRANSACTION في محرك SQLServer] | * [https://docs.microsoft.com/en-us/sql/t-sql/language-elements/rollback-transaction-transact-sql توثيق BEGIN TRANSACTION في محرك SQLServer] | ||
[[تصنيف:SQL]] | [[تصنيف:SQL|{{SUBPAGENAME}}]] | ||
[[تصنيف:SQL Transactions]] | [[تصنيف:SQL Transactions|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 15:39، 28 يناير 2018
يُستخدم هذا الأمر للإعلام بالبدء بإجراء مجموعة من العمليات التي قد تنتهي بأمر COMMIT
أو ROLLBACK
، وله الصيغة التالية:
START TRANSACTION;
وتختلف هذه الصيغة باستخدام الكلمة المفتاحية BEGIN
في محرك SQL Server لتصبح:
BEGIN TRANSACTION;
أما في محرك SQLite فهي الكلمة المفتاحية BEGIN
فقط، أيّ:
BEGIN;
وفي محرك Oracle يصبح الأمر على النحو الآتي:
SET TRANSACTION NAME 'name';
ويكون هذا الأمر مسؤولًا عن البدء بالعمليات وتسميتها بآن واحد بالاسم الذي يُحدد عبر name.
مثال
إذا كان الجدول الآتي موجودًا في قاعدة البيانات:
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
لتُجرَى العمليات بعدها (حذف السجلات التي تكون فيها قيمة الفاتورة أكبر من 200) وتُحفَظ التغييرات عبر الأمر COMMIT
:
BEGIN TRANSACTION;
DELETE FROM customers
WHERE Bill>200;
COMMIT;
التوافقية
SQLServer | SQLite | Oracle | PostgreSQL | MySQL |
---|---|---|---|---|
نعم | نعم | نعم | نعم | نعم |