我最近在 linq-to-sql 方面遇到了一些问题。问题在于,当我们将触发器附加到事件时,它“认为”插入和更新失败。
一个例子可以是一行,当一行被更改时,附加一个触发器将“LastUpdated”冒号设置为当前时间。这将导致 linq-to-sql 认为更新或插入失败,但这只是某些时候,因为它有时会经历,我认为这是当 sql 服务器负载较重时,因此无法在验证之前执行触发器,这只是猜测。
由于我的脚本只是一个更大脚本的一部分,因此禁用触发器不是一个选项,所以我需要找到解决方案,或者重写我的程序。
你们中是否有人遇到过这个问题并找到了解决方案,例如在插入后禁用验证?
触发。
USE [cnhha]
GO
/****** Object: Trigger [dbo].[LastUpdated] Script Date: 05/12/2011 16:26:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[LastUpdated] ON [dbo].[CN_User]
FOR INSERT, UPDATE
AS
update cn_user set lastupdated=getdate() where campusnetuserid in (select campusnetuserid from inserted)
你可能需要SET NOCOUNT ON http://msdn.microsoft.com/en-us/library/ms189837.aspx在你的触发器中
除了我中提到的狭义情况(SQLDataAdapter)问题“SET NOCOUNT ON use” https://stackoverflow.com/questions/1483732/set-nocount-on-usage,大多数客户端代码都需要它
如果您能够将客户端 UPDATE 更改为使用 DEFAULT 关键字,您也可以删除触发器
update cn_user
set col1 = this, col2 = that,...,
lastupdated= DEFAULT
where ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)