CREATE TRIGGER [tr_a] ON [dbo].student
FOR UPDATE
AS
declare @aa int
if update(math)
begin
select @aa=math from deleted
if @aa>=60
raiserror ('数学成绩是及格的,不能更新',10,1)
rollback transaction
else
update A
set A.math=B.math
from student A inner join inserted B on A.s_id=B.s_id
end少了一句rollback transaction
FOR UPDATE
AS
declare @aa int
if update(math)
begin
select @aa=math from deleted
if @aa>=60
raiserror ('数学成绩是及格的,不能更新',10,1)
rollback transaction
else
update A
set A.math=B.math
from student A inner join inserted B on A.s_id=B.s_id
end少了一句rollback transaction
少了句 rollbackCREATE TRIGGER [tr_a] ON [dbo].student
FOR UPDATE
AS
declare @aa int
if update(math)
begin
select @aa=math from deleted
if @aa>=60
rollback
raiserror ('数学成绩是及格的,不能更新')
else
update A
set A.math=B.math
from student A inner join inserted B on A.s_id=B.s_id
end
服务器: 消息 156,级别 15,状态 1,过程 tr_a,行 11
在关键字 'else' 附近有语法错误。但如果我是这样写:
CREATE TRIGGER [tr_a] ON [dbo].student
FOR UPDATE
AS
declare @aa int
if update(math)
begin
select @aa=math from deleted
if @aa>=60
raiserror ('数学成绩是及格的,不能更新',10,1)
rollback
end则下面的语句也不能更新:
UPDATE student set math=85 WHERE s_id=3请指教,谢谢!
FOR UPDATE
AS
declare @aa int
if update(math)
begin
select @aa=math from deleted
if @aa>=60
Begin --这里加上Begin
rollback
raiserror ('数学成绩是及格的,不能更新')
End --这里加上End
else
update A
set A.math=B.math
from student A inner join inserted B on A.s_id=B.s_id
end