Hay algua operación que yo pueda hacer luego de agregar atributos en tablas
que participan en vistas, para que se "actualicen" y no fallen desde la
aplicación???
Gracias
Nelson Rodriguez
Salto - Uruguay
ner...@adinet.com.uy
Por casualidad usas "select * from ..." para definir las vistas?
Usar esa forma no es una buena practica. SQL Server no incluye columnas
nuevas que se agregan a la tabla despues de haber creado la vista, al menos
que la refresques. SQL Server expande la lista de columnas durante la
creacion, por lo que la sentencia "select * from ..." se convierte en "select
c1, c2, ..., cn from ..." que es la que sera referenciada posteriormente.
Veamos un ejemplo.
Ejemplo:
create view dbo.v1
as
select *
from dbo.orders
where orderid = 10250
go
select ORDINAL_POSITION, COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA = 'dbo' and TABLE_NAME = 'v1'
go
alter table dbo.orders
add c1 int null
go
select ORDINAL_POSITION, COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA = 'dbo' and TABLE_NAME = 'v1'
go
exec sp_refreshview 'dbo.v1'
go
select ORDINAL_POSITION, COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA = 'dbo' and TABLE_NAME = 'v1'
go
alter table dbo.orders
drop column c1
go
drop view dbo.v1
go
Lo comun es que se actualizen las vistas que requieren las nuevas columnas.
AMB