Condividi tramite


Modifica di tabelle (XML)

L'istruzione ALTER TABLE supporta il tipo di dati xml. Ad esempio, è possibile modificare qualsiasi colonna di tipo string nel tipo di dati xml. Si noti che in questi casi è necessaria la correttezza del formato dei documenti contenuti nella colonna. Se inoltre si sta modificando il tipo della colonna da stringa a XML tipizzato, i documenti nella colonna vengono convalidati rispetto agli schemi XSD specificati.

CREATE TABLE T (Col1 int primary key, Col2 nvarchar(max))
GO
INSERT INTO T 
VALUES (1, '<Root><Product ProductID="1"/></Root>')
GO
ALTER TABLE T 
ALTER COLUMN Col2 xml
GO

È possibile modificare una colonna di tipo xml da XML non tipizzato a XML tipizzato. Esempio:

CREATE TABLE T (Col1 int primary key, Col2 xml)
GO
INSERT INTO T 
values (1, '<p1:ProductDescription ProductModelID="1" 
xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">
            </p1:ProductDescription>')
GO 
-- Make it a typed xml column by specifying a schema collection.
ALTER TABLE T 
ALTER COLUMN Col2 xml (Production.ProductDescriptionSchemaCollection)
GO

[!NOTA]

Lo script verrà eseguito sul database AdventureWorks, poiché l'insieme di schemi XML Production.ProductDescriptionSchemaCollection viene creato come parte del database AdventureWorks.

Nell'esempio precedente, tutte le istanze archiviate nella colonna vengono convalidate e tipizzate rispetto agli schemi XSD nell'insieme specificato. Se la colonna contiene una o più istanze XML non valide rispetto allo schema specificato, l'istruzione ALTER TABLE avrà esito negativo e non sarà possibile modificare il tipo della colonna da XML non tipizzato a XML tipizzato.

[!NOTA]

Se una tabella è di grandi dimensioni, la modifica di una colonna di tipo xml può risultare onerosa, poiché è necessario un controllo di correttezza del formato di ogni documento e, nel caso del codice XML tipizzato, è necessaria anche la convalida.

Per ulteriori informazioni sul codice XML tipizzato, vedere Dati XML tipizzati confrontati con dati XML non tipizzati.