例如:
ADO與SQL觸發器報錯的問題
如果數據表使用級聯更新的觸發器,且記錄影響到多行時,在前臺修記錄錄有時會報“無法爲更新定位行,一些值可能已在最後一次讀取後已更改。”的錯誤,如果是在觸發器後才產生的此錯誤,則在觸發器里加上SET NOCOUNT ON即可。原因估計是,更新多行結果返回更新多行信息不是一行,而ado引擎便判斷錯誤。所以乾脆不允許出現任何返回。建議寫觸發器時都加上這句,少好多麻煩。
例如:
例如:
CREATE TRIGGER TR_Depart_UpdateCode ON [dbo].[Depart]
FOR UPDATE
AS
begin
if Update(cCode)
begin
SET NOCOUNT ON --加上這句,前臺纔不會報錯,意思爲不返回更新記錄數
declare @OldCode varchar(20),@NewCode varchar(20)
Select @OldCode = cCode from Deleted
Select @NewCode = cCode from Inserted
--人員所屬部門
Update Person Set cDepCode = @NewCode where cDepCode = @OldCode
SET NOCOUNT OFF --恢復默認值
end
end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.