创建如下触发器CREATE TRIGGER [UserScript] ON [dbo].[users] 
FOR UPDATE
AS
Begin
declare @useid varchar(100)
Declare @diy_style varchar(500)
Declare @status int
Set @useid='<script'
BEGIN TRANSACTION
Select @diy_style=diy_style From inserted
Set @Status = CharIndex(@useid,@diy_style)
Begin TRANSACTION
If @status>0 
ROLLBACK TRANSACTION
Else
COMMIT TRANSACTION
End但是浏览页面的时候经常出现Microsoft OLE DB Provider for SQL Server 错误 '80040e14' 此会话中的活动事务已由另外一个会话提交或终止。 

解决方案 »

  1.   


    --楼主是不希望更新时,diy_style字段带有<script字符。。可以改变下思路,创建一个更新前触发的触发器,如果不包含,才更新。。除非不做更新,如下:CREATE TRIGGER [UserScript] ON [dbo].[users] instead of UPDATE
    AS
    Begin
    update users set diy_style=b.diy_style,其他字段=b.其他字段 from users a,inserted b
    where a.主键字段=b.主键字段 and CharIndex('<script',b.diy_style)=0
    End