Compartilhar via


Modificando dados em exibições particionadas

Uma exibição particionada não atualizável só serve como cópia somente leitura da tabela original. A exibição particionada atualizável pode exibir todos os recursos da tabela original.

Uma exibição é considerada particionada e atualizável quando é um conjunto de instruções SELECT cujos conjuntos de resultados individuais são combinados em um, utilizando a instrução UNION ALL. Cada instrução SELECT referencia uma tabela base SQL Server. A tabela pode ser tanto local como vinculada, referenciada por usar um nome de quatro partes, a função OPENROWSET ou a função OPENDATASOURCE (não é possível usar funções OPENDATASOURCE ou OPENROWSET que especifiquem consultas de passagem).

Além disso, as instruções de modificação de dados que referenciam a exibição devem seguir as regras definidas para as instruções INSERT, UPDATE e DELETE.

ObservaçãoObservação

A importação em massa em uma exibição particionada não é suportada pelo comando bcp ou pela instrução de BULK INSERT ou pela instrução INSERT... SELECT * FROM OPENROWSET(BULK...) . No entanto, é possível inserir várias linhas em uma exibição particionada usando uma instrução INSERT.

Se a exibição particionada for distribuída por servidores, evite usar gatilhos ou ações em cascata nas tabelas base. Um gatilho ou ação em cascata poderia fazer alterações nos dados subjacentes que podem afetar a definição da exibição.

As exibições particionadas distribuídas só podem ser atualizadas se o usuário tiver permissões para CONTROL, ALTER, TAKE OWNERSHIP ou VIEW DEFINITION em todas as tabelas subjacentes à exibição. Para obter mais informações, consulte Solucionando problemas de visibilidade de metadados de exibições particionadas distribuídas.

ObservaçãoObservação

Os dados só poderão ser modificados por meio de uma exibição particionada distribuída se o SQL Server 2008 Enterprise ou SQL Server 2008 Developer estiverem instalados. Contudo, é possível modificar dados por uma exibição particionada local em qualquer edição do SQL Server 2008.

Instruções INSERT

As instruções INSERT adicionam dados às tabelas membro por meio da exibição particionada. As instruções INSERT devem seguir estas regras:

  • Todas as colunas precisam estar incluídas na instrução INSERT, mesmo que a coluna seja NULL na tabela base ou que tenha uma restrição DEFAULT definida na tabela base.

  • A palavra-chave DEFAULT não pode ser especificada na cláusula VALUES da instrução INSERT.

  • As instruções INSERT precisam fornecer um valor que satisfaça a lógica da restrição CHECK definida na coluna de particionamento de uma das tabelas membro.

  • As instruções INSERT não serão permitidas quando uma tabela membro contiver uma coluna com uma propriedade de identidade.

  • Não serão permitidas instruções INSERT se uma tabela membro contiver uma coluna timestamp.

  • As instruções INSERT não são permitidas quando há uma autojunção com a mesma exibição ou qualquer uma das tabelas membro.

Instruções UPDATE

As instruções UPDATE modificam dados em uma ou mais tabelas membro através da exibição particionada. As instruções UPDATE devem seguir estas regras:

  • As instruções UPDATE não podem especificar a palavra-chave DEFAULT como valor na cláusula SET mesmo que a coluna tenha um valor DEFAULT definido na tabela membro correspondente.

  • O valor de uma coluna com uma propriedade de identidade não pode ser alterado; porém, as outras colunas podem ser atualizadas.

  • O valor de uma PRIMARY KEY não poderá ser alterado se a coluna contiver text, image ou dados ntext.

  • Não serão permitidas atualizações se uma tabela base contiver uma coluna timestamp.

  • As atualizações não são permitidas quando há uma autojunção com a mesma exibição ou qualquer uma das tabelas membro.

Instruções DELETE

As instruções DELETE removem dados em uma ou mais tabelas membro através da exibição particionada. As instruções DELETE não são permitidas quando há uma autojunção com a mesma exibição ou qualquer uma das tabelas membro.