m.mohammady.j
دوشنبه 09 مرداد 1391, 17:57 عصر
من براي يكي از جدولهايم نياز به نوشتن تريگر دارم . اسم جدولم TblPreSubmit است و مي خواهم وقتي مقدار فيلدهاي Ave و Enzebat بزرگتر از 18 باشد آنگاه مقدار فيلد Mark را true كنم.
و كد تريگرم به شكل زير است :
ALTER TRIGGER Marked
ON dbo.TblPreSubmit
after
INSERT,UPDATE
AS
begin
declare
@Mark bit,@Enzebat float ,@Ave float,
@Name varchar(20), @Family varchar(50) , @MeliCode bigint,
@SHSH bigint , @Sodor varchar(20) , @BornDate date,
@PostalCode bigint , @Pictur varchar(100),@Olympiad bit
set @Enzebat=(select Enzebat from dbo.TblPreSubmit )
set @Ave=(select Ave From dbo.TblPreSubmit)
set @Mark=(select Mark from dbo.TblPreSubmit )
set @Name=(select Name From dbo.TblPreSubmit)
set @Family=(select Family from dbo.TblPreSubmit )
set @MeliCode=(select MeliCode From dbo.TblPreSubmit)
set @SHSH=(select SHSH from dbo.TblPreSubmit )
set @Sodor=(select Sodor From dbo.TblPreSubmit)
set @BornDate=(select BornDate from dbo.TblPreSubmit )
set @PostalCode=(select PostalCode From dbo.TblPreSubmit)
--set @Picture=(select Picture from dbo.TblPreSubmit )
set @Olympiad=(select Olympiad From dbo.TblPreSubmit)
--set @Mark=(select Mark from dbo.TblPreSubmit )
if (@Enzebat>=18) and (@Ave>=18)
set @Mark='true'
else
set @Mark='false'
update dbo.TblPreSubmit set
--Name=@Name,
--Family=@Family,
--MeliCode=@MeliCode,
--SHSH=@SHSH,
--Sodor=@Sodor,
--BornDate=@BornDate,
--PostalCode=@PostalCode,
--Picture=@Pictur,
--Olympiad=@Olympiad,
--Ave=@Ave,
--Enzebat=@Enzebat,
Mark=@Mark
end
آنهايي كه دو تا – اولشان است Comment مي باشند.
وقتي تريگر را مي نويسم ذخيره اش مي كنم و آيكن آن به جدولم اضافه مي شود
اما متاسفانه پس از وارد كردن داده ها با خطاي زير مواجه مي شوم :
no rows was update
the data in row 2 not committed
و الي آخر
خواهشمندم كمك كنيد دوستان
و كد تريگرم به شكل زير است :
ALTER TRIGGER Marked
ON dbo.TblPreSubmit
after
INSERT,UPDATE
AS
begin
declare
@Mark bit,@Enzebat float ,@Ave float,
@Name varchar(20), @Family varchar(50) , @MeliCode bigint,
@SHSH bigint , @Sodor varchar(20) , @BornDate date,
@PostalCode bigint , @Pictur varchar(100),@Olympiad bit
set @Enzebat=(select Enzebat from dbo.TblPreSubmit )
set @Ave=(select Ave From dbo.TblPreSubmit)
set @Mark=(select Mark from dbo.TblPreSubmit )
set @Name=(select Name From dbo.TblPreSubmit)
set @Family=(select Family from dbo.TblPreSubmit )
set @MeliCode=(select MeliCode From dbo.TblPreSubmit)
set @SHSH=(select SHSH from dbo.TblPreSubmit )
set @Sodor=(select Sodor From dbo.TblPreSubmit)
set @BornDate=(select BornDate from dbo.TblPreSubmit )
set @PostalCode=(select PostalCode From dbo.TblPreSubmit)
--set @Picture=(select Picture from dbo.TblPreSubmit )
set @Olympiad=(select Olympiad From dbo.TblPreSubmit)
--set @Mark=(select Mark from dbo.TblPreSubmit )
if (@Enzebat>=18) and (@Ave>=18)
set @Mark='true'
else
set @Mark='false'
update dbo.TblPreSubmit set
--Name=@Name,
--Family=@Family,
--MeliCode=@MeliCode,
--SHSH=@SHSH,
--Sodor=@Sodor,
--BornDate=@BornDate,
--PostalCode=@PostalCode,
--Picture=@Pictur,
--Olympiad=@Olympiad,
--Ave=@Ave,
--Enzebat=@Enzebat,
Mark=@Mark
end
آنهايي كه دو تا – اولشان است Comment مي باشند.
وقتي تريگر را مي نويسم ذخيره اش مي كنم و آيكن آن به جدولم اضافه مي شود
اما متاسفانه پس از وارد كردن داده ها با خطاي زير مواجه مي شوم :
no rows was update
the data in row 2 not committed
و الي آخر
خواهشمندم كمك كنيد دوستان