What are the
mutually exclusive Actions? and Why?? With Example
SQL and Call Section are mutually
exclusive to avoid the Data Conflicts and Deadlocks.
Assume Call Section and SQL Actions
are allowed in one Step.
Assume an Update SQL is there in one
Step which updates ABC Table. So curser will be opened on ABC Table.
And Assume a Call Section is there in
the same Step which calls the other Section which is having another SQL on the
same ABC Table.
As the cursor is already opened, when
it tries to execute 2nd SQL, Deadlocks and data conflicts will
arise.
So to avoid these situations, Call
Section is not allowed when there is an SQL Action in a Step and vice versa.
Sample Program:
Assume Call Section and SQL Actions are allowed in one
Step.
Include Update SQL in one Step and from the same Step
call the other Section which is having Delete SQL on the same table.
Ex:
Main Section
Step1
SQL
UPDATE
ABC SET SALARY = SALARY + 1000 WHERE EMPLID = ‘XYZ’
CallSection
Call
the Section1
Section1
Step1
SQL
DELETE
FROM ABC WHERE EMPLID = ‘XYZ’
|
In Main Section – Step1 – SQL Action – Salary will be
update for XYZ employee and it will not Commit. Then it calls the Section1.
In Section1 – Step1 – SQL Action – It deletes XYZ
employee and as there are no other Actions it will try to Commit. As there is
an uncommitted SQL, conflict will occur.
Since Call Section and SQL are Mutually Exclusive we
have to write the same code in other way.
Main Section
Step1
SQL
UPDATE
ABC SET SALARY = SALARY + 1000 WHERE EMPLID = ‘XYZ’
Step2
SQL
DELETE
FROM ABC WHERE EMPLID = ‘XYZ’
|
In Main Section – Step1 – SQL Action – Salary will be
update for XYZ employee. Since there are no other Actions, while coming out
from Step it issues the Commit.
In Main Section – Step2 – SQL Action – It deletes XYZ
employee Row and since there are no other Actions it issues the Commit.
Since there are 2 Step Level Commits there will not be
any chances to exist Deadlocks.
Actions in Application Engine
What’s the Sequence of execution?
No comments:
Post a Comment