Quero atualizar uma função escalar em nosso banco de dados. Essa função é usada para várias colunas calculadas em uma tabela de chaves, para que eu receba um erro de dependência se tentar atualizá-lo. Posso remover explicitamente as colunas, atualizar a função e adicioná-las novamente, mas, sem muito trabalho extra, isso mudará a ordem das colunas e poderá ter outras conseqüências não intencionais. Gostaria de saber se havia uma maneira mais limpa de fazê-lo?
sql-server-2008
sql-server-2005
functions
robertc
fonte
fonte
Respostas:
Isso pode ser mais trabalhoso, mas deve obter (aproximadamente) o que você procura:
1 - Crie uma nova tabela que tenha apenas seu PK a partir da tabela principal e da função atualizada.
2 - Solte sua coluna antiga
3 - Renomeie sua tabela antiga para algo como
TableName_Base
4 - Crie um
VIEW
que junte sua tabela principal à sua tabela de pesquisa, com os campos na ordem em que você deseja vê-los. Atribua um nome à visualização, seja qual for o nome da tabela original.Isso provavelmente criará alguns problemas com
INSERTS
eUPDATES
embora você tenha acesso por meio de uma visualização. Para lidar com isso, você pode inserir diretamente na tabela, ignorando a visualização.fonte