共用方式為


使用 INSTEAD OF 觸發程序中的 text、ntext 及 image 資料

資料修改可能會涉及 textntextimage 資料行。在基底資料表中,儲存於 textntextimage 資料行中的值是一種文字指標,會指向含有資料的頁面。如需詳細資訊,請參閱<同資料列資料>。

ms175196.note(zh-tw,SQL.90).gif附註:
使用 textntextimage 資料僅為了提供回溯相容性。儲存大型資料時,較適合使用的是 varchar(max)nvarchar(max)varbinary(max) 資料類型。AFTER 與 INSTEAD OF 觸發程序皆支援在 inserteddeleted 資料表中使用 varchar(max)nvarchar(max)varbinary(max) 資料。

雖然 AFTER 觸發程序不支援在 inserteddeleted 資料表中使用 textntextimage 資料,但 INSTEAD OF 觸發程序確實支援它們。textntextimage 資料儲存在 inserteddeleted 資料表中的方式,不同於資料儲存於基底資料表中的方式。textntextimage 資料不會儲存為個別的頁面鏈結。而是會儲存為每個資料列中的連續字串。這表示,在 inserteddeleted 資料表中並沒有 textntextimage 資料行的文字指標。TEXTPTR 與 TEXTVALID 函數,以及 READTEXT、UPDATETEXT 與 WRITETEXT 陳述式對於 inserteddeleted 資料表中的 textntextimage 資料行無效。textntextimage 但支援資料行的所有其他使用方式,例如,在選取清單、WHERE 子句搜尋條件、或 SUBSTRING、PATINDEX 或 CHARINDEX 等函數中加以參考。INSTEAD OF 觸發程序中 textntextimage 資料上的作業,會受到目前 SET TEXTSIZE 選項的影響。此值可透過 @@TEXTSIZE 函數來決定。

儲存在 inserteddeleted 資料表中的 textntextimage 資料的類型,會隨著觸發動作 (INSERT、UPDATE 或 DELETE) 而有所不同:

  • 在 INSERT 陳述式中,inserted 資料表包含 textntextimage 資料行的新值。deleted 資料表沒有任何資料列。
  • 在 DELETE 陳述式中,inserted 資料表並沒有資料列,而 deleted 資料表資料列則包含 textntextimage 資料行在 DELETE 啟動之前所包含的值。
  • 在未變更 textntextimage 值的 UPDATE 陳述式中,inserteddeleted 資料表資料列在 textntextimage 資料行中會包含相同的值。
  • 在會變更 textntextimage 值的 UPDATE 陳述式中,deleted 資料表所含的資料值會與 UPDATE 啟動之前的值相同,而 inserted 資料表所含的資料則含有 SET 子句所指定的任何修改。

若 INSERT、UPDATE 或 DELETE 陳述式修改了許多含有大型 textntextimage 值的資料列,則可能需要大量記憶體來存放 inserteddeleted 資料表中的 textntextimage 資料副本。複製大量資料也會降低效能。參考具有 INSTEAD OF 觸發程序之檢視或資料表的 INSERT、UPDATE 或 DELETE 陳述式,在修改資料列時應盡量採用逐一修改或一次修改數個資料列的方式。

請參閱

概念

使用 INSTEAD OF 觸發程序

說明及資訊

取得 SQL Server 2005 協助