Insertar datos en una vista

Insertar datos en una vista

Hay mucha gente que cree que las vistas en SQL Server son de solo lectura por naturaleza, la verdad es que no es as├¡, se pueden administrar, dar permisos de insert, select, update y no importa si las vistas tienen joins, si la consulta se puede resolver, (puede averiguarse a cual de las tablas del join van los datos) tambi├®n se puede insertar, aqu├¡ teneis un ejemplo de como funciona

use test
go
create login test with password='Contrase├▒a01'
go
create user test 
go
create table demoinsertvistas(id int identity(1,1) not null primary key, descripcion varchar(10))
go
create view vw_demoinsertvistas as select * from demoinsertvistas
go
grant select on demoinsertvistas to test
go
setuser 'test'
go
insert into demoinsertvistas values ('test')

/*
Msg 229, Level 14, State 5, Line 1
The INSERT permission was denied on the object 'demoinsertvistas', database 'test', schema 'dbo'.
*/
go
select * from demoinsertvistas
go
setuser
go
grant insert on demoinsertvistas to test
grant select,insert on vw_demoinsertvistas to test
go
setuser 'test'
insert into demoinsertvistas values ('test')
insert into vw_demoinsertvistas values ('test 2')
go
Select * from demoinsertvistas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *