შეგვიძლია თუ არა ტრანზაქციის გამოყენება შენახულ პროცედურაში?
შეგვიძლია თუ არა ტრანზაქციის გამოყენება შენახულ პროცედურაში?

ვიდეო: შეგვიძლია თუ არა ტრანზაქციის გამოყენება შენახულ პროცედურაში?

ვიდეო: შეგვიძლია თუ არა ტრანზაქციის გამოყენება შენახულ პროცედურაში?
ვიდეო: Stored Procecure, Transaction processing, Exception handling SQL Server 2024, ნოემბერი
Anonim

თუ ჩვენ აქვს ერთზე მეტი SQL განცხადება შესრულებული ში შენახული პროცედურა და ჩვენ გსურთ გააუქმოთ ნებისმიერი ცვლილება, რომელიც შესრულებულია რომელიმე SQL განცხადების მიერ, იმ შემთხვევაში, თუ შეცდომა მოხდა ერთ-ერთი SQL განცხადების გამო, ჩვენ შეგვიძლია გამოვიყენოთ ტრანზაქცია შენახულ პროცედურაში.

უბრალოდ, შენახული პროცედურები გადის ტრანზაქციაში?

დაბუდებული შენახული პროცედურები არიან შესრულებული წელს გარიგება ყველაზე გარე კონტექსტში შენახული პროცედურა . ეს არის ნაგულისხმევი პარამეტრი. უზრუნველყოფს ზემოთ აღწერილ ნაგულისხმევ ქცევას. ანუ ყველა SQL განცხადება ა შენახული პროცედურის შესრულება როგორც მარტოხელა გარიგება ბლოკი.

ზემოაღნიშნულის გარდა, შეგვიძლია გამოვიყენოთ commit პროცედურაში? Ზოგადად, პროცედურები არ უნდა ჩაიდინოს . Თუ შენ ჩაიდინოს საწყობის შიგნით პროცედურა , თქვენ ზღუდავთ მის ხელახლა გამოყენებას, რადგან აბონენტს, რომელსაც სურს ცვლილებები პროცედურა ხდის იყოს ნაწილი უფრო დიდი ტრანზაქციის არ შეიძლება უბრალოდ დარეკვა პროცედურა პირდაპირ.

ამასთან დაკავშირებით, შეგვიძლია გამოვიყენოთ ტრანზაქცია SQL ფუნქციაში?

1 პასუხი. Ამიტომაც გარიგებები ამისთვის არასაჭიროა sql - სერვერი ფუნქციები . თუმცა, შენ შეუძლია შეცვლა გარიგება იზოლაციის დონე, მაგალითად, შეგიძლიათ გამოყენება NOLOCK-ის მინიშნება, რომ მიაღწიოთ "წაკითხვის გარეშე" გარიგება იზოლაციის დონე და წაიკითხეთ სხვაგან მიუღებელი მონაცემები გარიგებები.

შეგვიძლია გამოვიყენოთ ჩადგმული ტრანზაქციები SQL-ში, თუ კი, მაშინ როგორ?

SQL სერვერი ნამდვილად არ უჭერს მხარს წყობილი ტრანზაქციები . არის მხოლოდ ერთი გარიგება დროულად. ეს ერთი გარიგება აქვს ძირითადი წყობილი გარიგება მრიცხველი, @@TRANCOUNT. ყოველი ზედიზედ იწყება გარიგება ნამატები The მრიცხველი ერთი, თითოეული ჩაიდინოს გარიგება ამცირებს მას ერთით.

გირჩევთ: