¿Por qué no me deja insertar en esta vista?

09/11/2007 - 13:05 por Eve | Informe spam
Hola,

A ver si alguien puede decirme porqué no puedo en la "Vista_1" agregar
valores en el campo "imprimible" en el registro de código=2 y código=3.

Me dice: "Los datos han cambiado desde la última vez que se recuperó el
panel de resultados. (Error de concurrencia optimista)..." Le digo que Si
para que continúe y me sale otro error: "No se ha actualizado ninguna fila.
Los datos de la fila 2 no se confirmaron. La fila actualizada ha cambiado o
se ha eliminado desde la última vez que se recuperaron los datos".

Si la importo desde Access si que me deja poner un valor en "imprimible", y
CodSubFam coge AUTOMÁTICAMENTE el valor del código que estoy modificando.

Muchísimas gracias,

Eve.



Código que crea las 2 tablas y la Vista relacionándola:



/****** Objeto: Table [dbo].[TL_SubFamilias] Fecha de la secuencia de
comandos: 11/09/2007 09:40:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE TL_SubFamilias(
[Grupo] [varchar](20) NOT NULL,
[Familia] [varchar](20) NOT NULL,
[Codigo] [varchar](20) NOT NULL,
[Nombre] [varchar](50) NULL,
[PathFoto] [varchar](250) NULL,
[NombreCorto] [varchar](20) NULL,
CONSTRAINT [PK_TL_SubFamilias] PRIMARY KEY CLUSTERED
(
[Grupo] ASC,
[Familia] ASC,
[Codigo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF;

INSERT INTO TL_SubFamilias VALUES
('FA9001','1','1','Entradas',NULL,'Entradas')
GO
INSERT INTO TL_SubFamilias VALUES
('FA9001','1','2','Primeros',NULL,'Primeros')
GO
INSERT INTO TL_SubFamilias VALUES ('FA9001','1','3','Postres',NULL,'Postres')
GO
/****** Objeto: Table [dbo].[AA_CartasPDF_SubfamImprim] Fecha de la
secuencia de comandos: 11/09/2007 09:29:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE AA_CartasPDF_SubfamImprim(
[CodSubFam] [varchar](20) NOT NULL,
[Imprimible] [varchar](50) NULL,
CONSTRAINT [PK_AA_CartasPDF_SubfamImprim] PRIMARY KEY CLUSTERED
(
[CodSubFam] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

INSERT INTO AA_CartasPDF_SubfamImprim VALUES ('1','si')
GO


/****** Objeto: View [dbo].[Vista_1] Fecha de la secuencia de comandos:
11/09/2007 09:50:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Vista_1]
AS
SELECT dbo.TL_SubFamilias.Codigo,
dbo.AA_CartasPDF_SubfamImprim.CodSubFam,
dbo.AA_CartasPDF_SubfamImprim.Imprimible
FROM dbo.TL_SubFamilias LEFT OUTER JOIN
dbo.AA_CartasPDF_SubfamImprim ON
dbo.TL_SubFamilias.Codigo = dbo.AA_CartasPDF_SubfamImprim.CodSubFam

Preguntas similare

Leer las respuestas

#6 Eve
13/11/2007 - 15:54 | Informe spam
Gracias por su contestación, ha aclarado mi concepto de por qué no puedo usar
la vista de esa manera.

"Gux (MVP)" wrote:

La única forma de actualizar la vista es que usted solamente modifique
columnas de solamente una de las tablas involucradas en la vista.

Por ejemplo:

create table t1 (col1 int, col2 int, col3 char(20))
create table t2 (col1 int, col4 char(20))
go

create view v1
as
select t1.col1 as t1col1, t2.col1 as t2col1, col2, col3, col4
from t1, t2
where t1.col1 = t2.col1


Si usted edita la vista V1 en la grilla de Management Studio, podrá hacer
con éxito cada una de estas cosas:

1. Ingresar datos solamente en t1col1, col2, col3. Esto provoca una
inserción en la tabla T1.

2. Ingresar datos solamente en t2col1, col4. Esto provoca una inserción en
la tabla T2.

En ambos casos, la grilla le advertirá que pudo insertar los datos pero que
no los puede mostrar (porque no cumplen con la condición de join de la vista).

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Eve" wrote:

> Hola, primero, gracias por responder y por su tiempo.
>
> Segundo: Yo intento modificar los datos de la vista en la consulta hecha en
> Microsoft SQL Server Management Studio.
>
> "Gux (MVP)" wrote:
>
> > Desde qué programa está usted intentando modificar los datos de la vista?
> >
> > Gustavo Larriera, Microsoft MVP
> > https://mvp.support.microsoft.com/profile/gux
> > Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
> >
> >
> >
> > "Eve" wrote:
> >
> > > Hola,
> > >
> > > A ver si alguien puede decirme porqué no puedo en la "Vista_1" agregar
> > > valores en el campo "imprimible" en el registro de código=2 y código=3.
> > >
> > > Me dice: "Los datos han cambiado desde la última vez que se recuperó el
> > > panel de resultados. (Error de concurrencia optimista)..." Le digo que Si
> > > para que continúe y me sale otro error: "No se ha actualizado ninguna fila.
> > > Los datos de la fila 2 no se confirmaron. La fila actualizada ha cambiado o
> > > se ha eliminado desde la última vez que se recuperaron los datos".
> > >
> > > Si la importo desde Access si que me deja poner un valor en "imprimible", y
> > > CodSubFam coge AUTOMÁTICAMENTE el valor del código que estoy modificando.
> > >
> > > Muchísimas gracias,
> > >
> > > Eve.
> > >
> > >
> > >
> > > Código que crea las 2 tablas y la Vista relacionándola:
> > >
> > >
> > >
> > > /****** Objeto: Table [dbo].[TL_SubFamilias] Fecha de la secuencia de
> > > comandos: 11/09/2007 09:40:50 ******/
> > > SET ANSI_NULLS ON
> > > GO
> > > SET QUOTED_IDENTIFIER ON
> > > GO
> > > SET ANSI_PADDING ON
> > > GO
> > > CREATE TABLE TL_SubFamilias(
> > > [Grupo] [varchar](20) NOT NULL,
> > > [Familia] [varchar](20) NOT NULL,
> > > [Codigo] [varchar](20) NOT NULL,
> > > [Nombre] [varchar](50) NULL,
> > > [PathFoto] [varchar](250) NULL,
> > > [NombreCorto] [varchar](20) NULL,
> > > CONSTRAINT [PK_TL_SubFamilias] PRIMARY KEY CLUSTERED
> > > (
> > > [Grupo] ASC,
> > > [Familia] ASC,
> > > [Codigo] ASC
> > > )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
> > > OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
> > > ) ON [PRIMARY]
> > >
> > > GO
> > > SET ANSI_PADDING OFF;
> > >
> > > INSERT INTO TL_SubFamilias VALUES
> > > ('FA9001','1','1','Entradas',NULL,'Entradas')
> > > GO
> > > INSERT INTO TL_SubFamilias VALUES
> > > ('FA9001','1','2','Primeros',NULL,'Primeros')
> > > GO
> > > INSERT INTO TL_SubFamilias VALUES ('FA9001','1','3','Postres',NULL,'Postres')
> > > GO
> > > /****** Objeto: Table [dbo].[AA_CartasPDF_SubfamImprim] Fecha de la
> > > secuencia de comandos: 11/09/2007 09:29:21 ******/
> > > SET ANSI_NULLS ON
> > > GO
> > > SET QUOTED_IDENTIFIER ON
> > > GO
> > > SET ANSI_PADDING ON
> > > GO
> > > CREATE TABLE AA_CartasPDF_SubfamImprim(
> > > [CodSubFam] [varchar](20) NOT NULL,
> > > [Imprimible] [varchar](50) NULL,
> > > CONSTRAINT [PK_AA_CartasPDF_SubfamImprim] PRIMARY KEY CLUSTERED
> > > (
> > > [CodSubFam] ASC
> > > )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
> > > OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
> > > ) ON [PRIMARY]
> > >
> > > GO
> > > SET ANSI_PADDING OFF
> > >
> > > INSERT INTO AA_CartasPDF_SubfamImprim VALUES ('1','si')
> > > GO
> > >
> > >
> > > /****** Objeto: View [dbo].[Vista_1] Fecha de la secuencia de comandos:
> > > 11/09/2007 09:50:21 ******/
> > > SET ANSI_NULLS ON
> > > GO
> > > SET QUOTED_IDENTIFIER ON
> > > GO
> > > CREATE VIEW [dbo].[Vista_1]
> > > AS
> > > SELECT dbo.TL_SubFamilias.Codigo,
> > > dbo.AA_CartasPDF_SubfamImprim.CodSubFam,
> > > dbo.AA_CartasPDF_SubfamImprim.Imprimible
> > > FROM dbo.TL_SubFamilias LEFT OUTER JOIN
> > > dbo.AA_CartasPDF_SubfamImprim ON
> > > dbo.TL_SubFamilias.Codigo = dbo.AA_CartasPDF_SubfamImprim.CodSubFam
> > >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida