PDA

View Full Version : همه sp های عادی هم transaction داشته باشد یا نه!



ali_kolahdoozan
جمعه 07 تیر 1387, 05:40 صبح
سلام اين چند تا sp رو ببينيد آيا وجود transaction تاثير مثبت يا منفي دارد؟ برش دارم يا توي همين ساده ها هم بزارم باشه ؟ چون اينجا وجودشون دليل خاصي نداره . نظرات خودتون رو با منبع و دقيق اگر لطف كنيد ممنون ميشم


-------=====------- Insert Proc
Create Procedure IPersons
@PersonName nvarchar(25),
@Family nvarchar(50),
@Tel nvarchar(20),
@Cell varchar(50),
@Address nvarchar(200),
@Sex bit,
@BShdate char(10),
@Bdate datetime,
@Mail varchar(50),
@Job nvarchar(50),
@id int output
As
Begin Transaction
Insert Into Persons(
PersonName,
Family,
Tel,
Cell,
Address,
Sex,
BShdate,
Bdate,
Mail,
Job
)
Values(
@PersonName,
@Family,
@Tel,
@Cell,
@Address,
@Sex,
@BShdate,
@Bdate,
@Mail,
@Job
)
IF @@Error = 0
Begin
Commit Transaction
Set @id=@@identity
End
Else
Rollback Transaction
-------=====------- Delete Proc
Create Procedure DPersons
@id int
As
Begin Transaction
Delete From Persons
Where
id=@id

IF @@Error = 0
Begin
Commit Transaction
End
Else
Rollback Transaction
-------=====------- Update Proc
Create Procedure UPersons
@id int,
@PersonName nvarchar(25),
@Family nvarchar(50),
@Tel nvarchar(20),
@Cell varchar(50),
@Address nvarchar(200),
@Sex bit,
@BShdate char(10),
@Bdate datetime,
@Mail varchar(50),
@Job nvarchar(50)
As
Update Persons
Set
PersonName=@PersonName,
Family=@Family,
Tel=@Tel,
Cell=@Cell,
Address=@Address,
Sex=@Sex,
BShdate=@BShdate,
Bdate=@Bdate,
Mail=@Mail,
Job=@Job
Where
id=@id

IF @@Error = 0
Begin
Commit Transaction
End
Else
Rollback Transaction
-------=====------- Select Proc
Create Procedure SPersons
@id int
As
Select
PersonName,
Family,
Tel,
Cell,
Address,
Sex,
BShdate,
Bdate,
Mail,
Job
From Persons
Where
id=@id

IF @@Error = 0
Begin
Commit Transaction
End
Else
Rollback Transaction
-------=====------- List Proc
Create Procedure LPersons
@id int
As
Select
PersonName,
Family,
Tel,
Cell,
Address,
Sex,
BShdate,
Bdate,
Mail,
Job
From Persons
IF @@Error = 0
Begin
Commit Transaction
End
Else
Rollback Transaction


این transaction ها ممکنه سبب lock بیهوده بشه . نظر شما چی است؟

AminSobati
جمعه 07 تیر 1387, 21:31 عصر
سلام،
زمانی که عملیات ویرایشی شما به هم وابسته نیستند، یا به عبارت دیگه قائده "یا همه یا هیچکدام (Atomicity)" مورد نیاز نیست، الزامی نداره برای هر عمل ویرایشی Transaction شروع کنید. چون خود SQL Server اون ویرایش رو در Transaction قرار میده و در صورت موفقیت آمیز بودنش Commit میکنه