Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Update mediante vista

Estas en el tema de Update mediante vista en el foro de SQL Server en Foros del Web. Buenas quisiera actualizar dos tablas en un solo query lei que podia hacerlo mediante una vista pero me da este error View or function 'BookMakersInc.dbo.EXT_VAgentInfoUpdate' ...
  #1 (permalink)  
Antiguo 25/05/2010, 13:50
 
Fecha de Ingreso: abril-2009
Mensajes: 67
Antigüedad: 15 años
Puntos: 0
Update mediante vista

Buenas quisiera actualizar dos tablas en un solo query lei que podia hacerlo mediante una vista pero me da este error

View or function 'BookMakersInc.dbo.EXT_VAgentInfoUpdate' is not updatable because the modification affects multiple base tables.


cree un sp que hace update a la vista no se si estoy bien


ALTER Procedure [dbo].[EXT_UpdateAgentInfo](@AgentID varchar(25),
@EMail varchar(4), @Active Char(1),@CasinoActive Char(1), @EnterBettingAdjustmentFlag Char(1),
@EnterTransactionFlag Char(1),@ChangeWagerLimitFlag Char(1),@ChangeCreditLimitFlag Char(1),
@ManageLinesFlag Char(1),@ChangeTempCreditFlag Char(1),@ChangeAgentNameFlag Char(1),
@ChangeEmailFlag Char (1), @ChangePasswordFlag Char(1), @ChangeCreditFlag Char(1),@ChangeMultibetFlag char(1))


As


Set nocount on


UPDATE [BookMakersInc].[dbo].[EXT_VAgentInfoUpdate]
SET
[Active] = @Active,
[CasinoActive] = @CasinoActive,
[EnterBettingAdjustmentFlag] = @EnterBettingAdjustmentFlag,
[EnterTransactionFlag] = @EnterTransactionFlag,
[ChangeWagerLimitFlag] = @ChangeWagerLimitFlag,
[ChangeCreditLimitFlag] = @ChangeCreditLimitFlag,
[ManageLinesFlag] = ManageLinesFlag,
[ChangeTempCreditFlag] = @ChangeTempCreditFlag,
[ChangeAgentNameFlag] = @ChangeAgentNameFlag,
[ChangeEmailFlag] = ChangeEmailFlag,
[ChangePasswordFlag] = @ChangePasswordFlag,
[ChangeCreditFlag] = @ChangeCreditFlag,
[ChangeMultibetFlag] = @ChangeMultibetFlag
Where [AgentID] = @AgentID



Esta es la vista




ALTER VIEW [dbo].[EXT_VAgentInfoUpdate]( Active, CasinoActive, EnterBettingAdjustmentFlag, EnterTransactionFlag, ChangeWagerLimitFlag, ChangeCreditLimitFlag,
ManageLinesFlag, ChangeTempCreditFlag, ChangeAgentNameFlag, ChangeEmailFlag, ChangePasswordFlag, ChangeCreditFlag,
ChangeMultibetFlag)
AS
SELECT Active, CasinoActive, EnterBettingAdjustmentFlag, EnterTransactionFlag, ChangeWagerLimitFlag, ChangeCreditLimitFlag,
ManageLinesFlag, ChangeTempCreditFlag, ChangeAgentNameFlag, ChangeEmailFlag, ChangePasswordFlag, ChangeCreditFlag,
ChangeMultibetFlag
FROM dbo.tbAgent AS a INNER JOIN
dbo.tbCustomer AS c ON a.AgentID = c.CustomerID INNER JOIN
dbo.EXT_AgentInfo AS e ON a.AgentID = e.Agentid COLLATE SQL_Latin1_General_CP1_CI_AS



GO
  #2 (permalink)  
Antiguo 25/05/2010, 15:58
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Update mediante vista

No, puedes hacer UPDATE mediante una vista, siempre y cuando la vista sea creada de esa forma y solo haga referencia a una sola tabla
  #3 (permalink)  
Antiguo 26/05/2010, 09:20
 
Fecha de Ingreso: abril-2009
Mensajes: 67
Antigüedad: 15 años
Puntos: 0
Respuesta: Update mediante vista

Hay alguna manera de que en un solo script pueda actualizar los campos de tres tablas que no tienen llaves relacionales entre si que son enviados en el stored procedure o solo puedo hacerlo por updates separados??????????
  #4 (permalink)  
Antiguo 26/05/2010, 16:47
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Update mediante vista

Cada tabla, debera tener su propio UPDATE, no puedes hacerlo en el mismo script, si en el mismo procedure
  #5 (permalink)  
Antiguo 27/05/2010, 13:05
 
Fecha de Ingreso: abril-2009
Mensajes: 67
Antigüedad: 15 años
Puntos: 0
Respuesta: Update mediante vista

Muchisimas gracias

Etiquetas: update, vistas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:11.