台灣最大程式設計社群網站
線上人數
512
 
會員總數:245127
討論主題:189033
歡迎您免費加入會員
討論區列表 >> MS SQL >> trigger的疑問
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
trigger的疑問
價值 : 30 QP  點閱數:1481 回應數:2

樓主

沁悠
初學者
10 63
760 70
發送站內信

請問一下
我有寫一個trigger
針對資料庫a異動的話就把舊的塞進去b table
我現在遇到一個問題是..
我有欄位是ntext就不能去create trigger嗎??
=============================================================================
訊息 311,層級 16,狀態 1,程序 TR_U_doup_record,行 27
無法在 'inserted' 和 'deleted' 資料表上使用 text、ntext 或 image 資料行。
==============================================================================
還是另有解法?

Create TRIGGER [dbo].[TR_U_doup_record]
ON [dbo].[doup_record]
AFTER Insert,UPDATE,Delete
AS
BEGIN
SET NOCOUNT ON;
IF (Select Count(1) From deleted) > 0 --表示有異動或刪除
Begin
Declare @insert_per as nvarchar(10)
Declare @insert_time as datetime
Set @insert_per=''
Set @insert_time = getDate()
IF (Select Count(1) From inserted) > 0
Begin
Select @insert_per = insert_per,@insert_time = insert_time from inserted
End
Insert Into doup_record_his (doup_sn,asset_sn,doup_reason,doup_state,doup_cost,doup_date,insert_per,insert_time)
Select doup_sn,asset_sn,doup_reason,doup_state,doup_cost,doup_date,@insert_per,@insert_time
From deleted
End
Else -- deleted = 0 表示是新增
Begin
IF (Select Count(1) From inserted) > 0 -- deleted = 0 and inserted > 0 表示新增
Begin
Select @insert_per = insert_per,@insert_time = insert_time from inserted
end
Insert Into doup_record_his (doup_sn,asset_sn,doup_reason,doup_state,doup_cost,doup_date,insert_per,insert_time)
Select doup_sn,asset_sn,doup_reason,doup_state,doup_cost,doup_date,@insert_per,@insert_time
From inserted
End
SET NOCOUNT OFF;
END

本篇文章發表於2008-02-27 14:28
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

白目米粉胖胖Jo
捐贈 VP 給 快樂打雜妹 檢舉此回應
Help寫的==>如果相容性等級為 80 或更高時,SQL Server 允許透過資料表或檢視表上的 INSTEAD OF 觸發程序更新 text、ntext、或 image 資料行。

本篇文章回覆於2008-02-27 17:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Honli
檢舉此回應
在 'inserted' 和 'deleted' 之後
再利用一次 select ntext欄位 from 表格 Where insert 或 delet 的資料
就可以了
本篇文章回覆於2018-11-11 13:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.