با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که علاقمند به یادگیری دوره آموزش تی اس کیو ال T-SQL هستند. در جلسه گذشته با Stored Procedures آشنا شدیم و کاربرد های آن را در تی اس کیو ال مشاهده کردیم و دانستیم که از MS SQL Server Stored procedure برای ذخیره کردن زمان هنگام نوشتن کدها در پایگاه داده استفاده می شود و علاوه بر این Stored procedure به دریافت خروجی هنگام عبور پارامترها کمک می کند. در این جلسه آموزش کار با Transactions در تی اس کیو ال را به شما ارائه می نماییم.
در ابتدای آموزش کار با Transactions در تی اس کیو ال باید گفت که Transactions یک واحد کار است که در برابر یک پایگاه داده صورت می گیرد.
به عبارت دیگر Transactions یک واحد یا دنباله ای از کار است که به ترتیب منطقی انجام می شود.
این واحد یا دنباله کاری می تواند به صورت دستی و توسط کاربر انجام شود و یا به صورت خودکار توسط یک برنامه پایگاه داده.
transaction یک نوع تراکنش برای ایجاد یک یا چند تغییر در پایگاه داده است.
برای مثال وقتی رکوردی را از یک table می سازید یا حذف می کنید و یا به روز رسانی می نمایید در حال انجام transaction در آن table هستید.
کنترل transaction برای اطمینان از درستی داده ها و رسیدگی به خطاهای پایگاه داده ضروری است.
عملاً بسیاری از SQL queries در یک گروه جمع می شوند و می توانید همه آن ها را به عنوان بخشی از transaction اجرا نمایید.
در آموزش کار با Transactions در تی اس کیو ال با انواع Transactions ها و دستورها آشنا خواهید شد.
transaction دارای چهار ویژگی زیر هستند که معمولا با اختصار ACID نامیده می شوند :
از دستورات زیر برای کنترل transaction استفاده می شود :
دستور کنترل Transactional فقط با دستورهای INSERT, UPDATE و DELETE استفاده می شود.
این دستورها نمی توانند هنگام ایجاد table ها یا حذف آنها استفاده شوند زیرا این عملیات به طور خودکار در پایگاه داده انجام می شود.
به منظور استفاده از دستور کنترل transactional در MS SQL Server باید transaction را با ‘begin tran’ آغاز کرد.
در غیر این صورت دستور transaction کار نخواهد کرد.
دستور COMMIT یک دستور transactional است.
از این دستور برای ذخیره تغییراتی که توسط transaction در پایگاه داده صورت می گیرد استفاده می گردد.
این دستور پس از آخرین دستور COMMIT یا ROLLBACK تمام transaction ها را در پایگاه داده ذخیره می کند.
در زیر می توانید سینتکس اصلی COMMIT command را مشاهده نمایید.
1 | COMMIT; |
CUSTOMERS table زیر را با رکوردهای زیر در نظر بگیرید :
1 2 3 4 5 6 7 8 | ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00 |
دستور زیر رکوردهایی را که در آن سن افراد ۲۵ سال در نظر گرفته شده را از table حذف می کند.
پس از حذف رکوردها COMMIT در پایگاه داده تغییر خواهد کرد.
1 2 3 4 | Begin Tran DELETE FROM CUSTOMERS WHERE AGE = 25 COMMIT |
در نتیجه به دست آمده ردیف های table حذف می شوند و SELECT statement خروجی زیر را ایجاد خواهد نمود.
1 2 3 4 5 6 | ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 3 kaushik 23 Kota 2000.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00 |
دستور ROLLBACK یک دستور transactional است.
این دستور ذخیره داده هایی را که در حال حاضر در پایگاه داده ذخیره نشده اند کنسل می کند.
این دستور تنها می تواند transactions هایی از زمان آخرین COMMIT یا ROLLBACK را لغو نماید.
در زیر می توانید سینتکس اصلی ROLLBACK command را مشاهده نمایید.
1 | ROLLBACK |
CUSTOMERS table زیر را با رکوردهای زیر در نظر بگیرید :
1 2 3 4 5 6 7 8 | ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00 |
در نتیجه به دست آمده ردیف های table حذف می شوند و SELECT statement خروجی زیر را ایجاد خواهد نمود.
1 2 3 4 5 6 7 8 | ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00 |
SAVEPOINT یک نقطه در یک transaction است.
از SAVEPOINT هنگام roll کردن یک transaction بدون rolling back شدن آن استفاده می شود.
در زیر می توانید سینتکس اصلی SAVEPOINT command را مشاهده نمایید.
1 | SAVE TRANSACTION SAVEPOINT_NAME |
از این دستور فقط هنگام ساخت SAVEPOINT در میان transactional statements استفاده می گردد.
از دستور ROLLBACK برای لغو گروهی از transaction ها استفاده می شود.
در ادامه می توانید سینتکس SAVEPOINT را ببینید.
1 | ROLLBACK TO SAVEPOINT_NAME |
در مثال زیر، ما سه رکورد مختلف را از جدول CUSTOMERS table حذف خواهیم کرد.
قبل از هر حذف باید یک SAVEPOINT ایجاد کنیم تا بتوانیم در هر زمانی هر SAVEPOINT را ROLLBACK نموده و اطلاعات عملیات را بازگردانی نماییم.
CUSTOMERS table زیر را با رکوردهای زیر در نظر بگیرید :
1 2 3 4 5 6 7 8 | ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00 |
در ادامه می توانید باقی عملیات را مشاهده نمایید.
1 2 3 4 5 6 7 8 9 10 11 12 13 | Begin Tran SAVE Transaction SP1 Savepoint created. DELETE FROM CUSTOMERS WHERE ID = 1 1 row deleted. SAVE Transaction SP2 Savepoint created. DELETE FROM CUSTOMERS WHERE ID = 2 1 row deleted. SAVE Transaction SP3 Savepoint created. DELETE FROM CUSTOMERS WHERE ID = 3 1 row deleted. |
با این که سه مورد حذف شده اند با این حال اقدام به ROLLBACK کردن SAVEPOINT که به عنوان SP2 شناسایی شده است می کنیم.
از ان جا که SP2 پس از حذف اول ایجاد شد، دو حذف آخر لغو می شوند.
1 2 | ROLLBACK Transaction SP2 Rollback complete. |
توجه داشته باشید که پس از حذف اول دوباره به SP2 رول می شویم.
1 | SELECT * FROM CUSTOMERS |
۶ ردیف انتخاب می شوند.
1 2 3 4 5 6 7 | ID NAME AGE ADDRESS SALARY 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00 |
از دستور SET TRANSACTION برای ایجاد یک transaction در پایگاه داده استفاده می شود.
این دستور برای مشخص کردن ویژگی های transaction که به دنبال آن هستیم، استفاده می شود.
در زیر می توانید سینتکس اصلیSET TRANSACTION را مشاهده نمایید.
1 | SET TRANSACTION ISOLATION LEVEL <Isolationlevel_name> |
در این جلسه آموزش کار با Transactions در تی اس کیو ال را ارائه کردیم.
در جلسه بعد با آموزش Indexes در T-SQL همراه شما هستیم.
با پی وی لرن همراه باشید.