É muito comum utilizar SELECT * na criação de views, mas uma simples inclusão de uma coluna na tabela referenciada na view pode acarretar um problema. Vamos praticar e vou explicando os detalhes…
Primeiro passo, criar um banco de testes… IF DB_ID('TesteView') IS NOT NULL
DROP DATABASE TesteView;
CREATE DATABASE TesteView;
GO
GO
Neste ponto vamos criar uma tabela e inserir registros…
CREATE TABLE Numeros
(
col1 INT NOT NULL,
col2 INT NOT NULL
)
CREATE TABLE Numeros
(
col1 INT NOT NULL,
col2 INT NOT NULL
)
INSERT INTO dbo.Numeros(col1, col2) VALUES (1,100);
INSERT INTO dbo.Numeros(col1, col2) VALUES (2,200);
INSERT INTO dbo.Numeros(col1, col2) VALUES (3,300);
INSERT INTO dbo.Numeros(col1, col2) VALUES (4,400);
INSERT INTO dbo.Numeros(col1, col2) VALUES (2,200);
INSERT INTO dbo.Numeros(col1, col2) VALUES (3,300);
INSERT INTO dbo.Numeros(col1, col2) VALUES (4,400);
Verificando se os registros foram incluidos com sucesso..
SELECT col1, col2 FROM dbo.Numeros;
O próximo passo é a criação da view. Atente para o fato do SELECT não definir as colunas que desejamos utilizar, e sim usar *.
CREATE VIEW VisaoNumeros
AS
SELECT * FROM dbo.Numeros;
GO
AS
SELECT * FROM dbo.Numeros;
GO
SELECT * FROM dbo.VisaoNumeros
E o resultado…
ALTER TABLE Numeros ADD col3 INT
SELECT * FROM dbo.Numeros;
SELECT * FROM dbo.VisaoNumeros;
EXEC sp_refreshview @viewname = 'dbo.VisaoNumeros';
SELECT * FROM dbo.VisaoNumeros;
E o resultado…
Nenhum comentário:
Postar um comentário