Utilizzo di dati text, ntext e image nei trigger INSTEAD OF

Le modifiche dei dati possono interessare le colonne text, ntext e image. Nelle tabelle di base il valore archiviato in una colonna text, ntext o image rappresenta un puntatore di testo che punta alle pagine contenenti i dati. Per ulteriori informazioni, vedere Dati all'interno di righe.

Nota

L'utilizzo di dati text, ntext e image è disponibile solo per motivi di compatibilità con le versioni precedenti. Il metodo di archiviazione consigliato per volumi di dati elevati consiste nell'utilizzare i tipi di dati varchar(max), nvarchar(max) e varbinary(max). Entrambi i trigger AFTER e INSTEAD OF supportano l'utilizzo di dati varchar(max), nvarchar(max) e varbinary(max) nelle tabelle inserted e deleted.

Diversamente dai trigger INSTEAD OF, i trigger AFTER non supportano i dati text, ntext o image nelle tabelle inserted e deleted. I dati text, ntext e image vengono archiviati nelle tabelle inserted e deleted in modo diverso da quello in cui vengono archiviati nelle tabelle di base. I dati text, ntext e image non vengono archiviati come catena di pagine distinta, ma come stringa continua all'interno di ogni riga. Ciò significa che non sono disponibili puntatori di testo per le colonne text, ntext o image nelle tabelle inserted e deleted. Le funzioni TEXTPTR e TEXTVALID e le istruzioni READTEXT, UPDATETEXT e WRITETEXT non sono valide per le colonne text, ntext e image delle tabelle inserted e deleted. Qualsiasi altro utilizzo delle colonne text, ntext o image è supportato, ad esempio come riferimento in elenchi di selezione, condizioni di ricerca della clausola WHERE o funzioni SUBSTRING, PATINDEX o CHARINDEX. Le operazioni sui dati text, ntext o image nei trigger INSTEAD OF sono interessate dall'opzione SET TEXTSIZE corrente. È possibile determinare questo valore utilizzando la funzione @@TEXTSIZE.

Il tipo di dati text, ntext o image archiviati nelle tabelle inserted e deleted varia a seconda dell'azione di trigger (INSERT, UPDATE o DELETE):

  • Nelle istruzioni INSERT la tabella inserted contiene il nuovo valore per la colonna text, ntext o image. Nella tabella deleted non è inclusa alcuna riga.

  • Nelle istruzioni DELETE la tabella inserted è priva di righe e le righe della tabella deleted contengono i valori presenti nella colonna text, ntext o image prima dell'avvio dell'istruzione DELETE.

  • Nelle istruzioni UPDATE in cui il valore text, ntext o image non è cambiato, le righe delle tabelle inserted e deleted contengono gli stessi valori per la colonna text, ntext o image.

  • Nelle istruzioni UPDATE in cui il valore text, ntext o image è stato modificato, la tabella deleted contiene i valori dei dati esistenti prima dell'avvio dell'istruzione UPDATE, mentre la tabella inserted contiene i dati con le eventuali modifiche specificate nella clausola SET.

Se tramite un'istruzione INSERT, UPDATE o DELETE vengono modificate molte righe con valori text, ntext o image elevati, può rendersi necessaria un'ingente quantità di memoria per la memorizzazione dei dati text, ntext o image nelle tabelle inserted e deleted. La copia di volumi di dati elevati può inoltre ridurre le prestazioni. Le istruzioni INSERT, UPDATE e DELETE che fanno riferimento a viste o tabelle che includono trigger INSTEAD OF devono modificare una riga per volta oppure solo numerose righe per volta, se possibile.

Vedere anche

Concetti