instead on sobre una vista

14/04/2004 - 13:19 por Kano | Informe spam
Buenas he creado una vista con un join de dos tablas, el caso esq quiero
insertar datos mediante la vista. Declaro un trigger de prueba sobre la
vista del tipo Insteado of Insert para q me capture las inserciones.
begin
-
select * from inserted
select CodigoMtoPersonal,null as
Codigo400,Nif,ViaPublica,Numero,CodigoMunicipio,FechaAplicacion,FechaObsolet
o,Email,Web from inserted
select
CodigoMtoPersonal,FechaNacimiento,FechaIngreso,FechaSalida,CodigoEstadoSocia
l,Login,PwdHash,Nombre,Apellido1,Apellido2 from inserted



end

con este codigo no deberia insertar, pero cuando manipulo directamente la
tabla mediante el enterprise manager la informacion q inserto queda
almacenada en la primera tabla solamente, es decir el trigger instead of no
se dispara, podriais indicarme porque o como lo soluciono?

Gracias por adelantado

Preguntas similare

Leer las respuestas

#6 Kano
15/04/2004 - 11:48 | Informe spam
"Adrian D. Garcia" escribió en el mensaje
news:
Ok, puedes pasarnos el script completo de la vista mas el script del


trigger
instead of?

Saludos

Adrian D. Garcia
NDSoft
MCSD
"Kano" <kano01ATterra.es> escribió en el mensaje
news:%
> no no .. simplemente no se ejecuta el trigger ... voy a las tablas donde
> deberia insetar los datos y no lo hace simplemente por su cuenta inserta
los
> valores en una de las dos tablas y en la otra no lo hace (son 2 tablas)
>
>
>
>
> "Adrian D. Garcia" escribió en el


mensaje
> news:
> > Has intendado realizar la modificacion desde el Enterprise Manager,
> moverte
> > luego de fila y despues volver a ejecutar la consulta de la vista?
> > Es muy posible que los cambios no los veas en el enterprise manager en
el
> > momento ya que el cree que solo se han cambiado los datos que estas
> editando
> > y lo lo que realmente este haciendo el trigger instead of.
> >
> > Saludos
> >
> > Adrian D. Garcia
> > NDSoft
> > MCSD
> > "Kano" <kano01ATterra.es> escribió en el mensaje
> > news:
> > > bueno, me expresé mal .. lo q quiero decir esq cuando manipulo
> > directamente
> > > la vista, se me guardan los cambios en una de las dos tablas q


entran
en
> > la
> > > vista. El trigger está sobre la vista, deberia activarse si manipulo
la
> > > vista desde el enterprise manager ? en todo caso no lo hace, lo cual
> > supone
> > > un problema grave para la consistencia de los datos de las tablas q
> > integran
> > > la vista.
> > >
> > >
> > >
> > >
> > >
> > >
> > > "Miguel Egea" escribió en el
mensaje
> > > news:
> > > > los triggers se disparan sobre los objetos que se crean, es decir


si
> vas
> > a
> > > > las tablas directamente el trigger no se dispara, tendrías que


poner
> > otro
> > > > trigger en la tabla, si quieres que se hagan inserciones solo


desde
tu
> > > otro
> > > > trigger puedes usar un truqillo como este
> > > >
> > >
> >
>



http://www.configuracionesintegrale...?articulo%
> > > > 4
> > > >
> > > > Saludos
> > > > Miguel Egea
> > > > "Kano" <kano01ATterra.es> escribió en el mensaje
> > > > news:
> > > > > Buenas he creado una vista con un join de dos tablas, el caso


esq
> > quiero
> > > > > insertar datos mediante la vista. Declaro un trigger de prueba
sobre
> > la
> > > > > vista del tipo Insteado of Insert para q me capture las
inserciones.
> > > > > begin
> > > > > -
> > > > > select * from inserted
> > > > > select CodigoMtoPersonal,null as
> > > > >
> > > >
> > >
> >
>



Codigo400,Nif,ViaPublica,Numero,CodigoMunicipio,FechaAplicacion,FechaObsolet
> > > > > o,Email,Web from inserted
> > > > > select
> > > > >
> > > >
> > >
> >
>



CodigoMtoPersonal,FechaNacimiento,FechaIngreso,FechaSalida,CodigoEstadoSocia
> > > > > l,Login,PwdHash,Nombre,Apellido1,Apellido2 from inserted
> > > > >
> > > > >
> > > > >
> > > > > end
> > > > >
> > > > > con este codigo no deberia insertar, pero cuando manipulo
> directamente
> > > la
> > > > > tabla mediante el enterprise manager la informacion q inserto
queda
> > > > > almacenada en la primera tabla solamente, es decir el trigger
> instead
> > of
> > > > no
> > > > > se dispara, podriais indicarme porque o como lo soluciono?
> > > > >
> > > > > Gracias por adelantado
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#7 Adrian D. Garcia
15/04/2004 - 11:50 | Informe spam
No han llegado los scripts

Saludos

Adrian D. Garcia
NDSoft
MCSD
"Kano" <kano01ATterra.es> escribió en el mensaje
news:

"Adrian D. Garcia" escribió en el mensaje
news:
> Ok, puedes pasarnos el script completo de la vista mas el script del
trigger
> instead of?
>
> Saludos
>
> Adrian D. Garcia
> NDSoft
> MCSD
> "Kano" <kano01ATterra.es> escribió en el mensaje
> news:%
> > no no .. simplemente no se ejecuta el trigger ... voy a las tablas


donde
> > deberia insetar los datos y no lo hace simplemente por su cuenta


inserta
> los
> > valores en una de las dos tablas y en la otra no lo hace (son 2


tablas)
> >
> >
> >
> >
> > "Adrian D. Garcia" escribió en el
mensaje
> > news:
> > > Has intendado realizar la modificacion desde el Enterprise Manager,
> > moverte
> > > luego de fila y despues volver a ejecutar la consulta de la vista?
> > > Es muy posible que los cambios no los veas en el enterprise manager


en
> el
> > > momento ya que el cree que solo se han cambiado los datos que estas
> > editando
> > > y lo lo que realmente este haciendo el trigger instead of.
> > >
> > > Saludos
> > >
> > > Adrian D. Garcia
> > > NDSoft
> > > MCSD
> > > "Kano" <kano01ATterra.es> escribió en el mensaje
> > > news:
> > > > bueno, me expresé mal .. lo q quiero decir esq cuando manipulo
> > > directamente
> > > > la vista, se me guardan los cambios en una de las dos tablas q
entran
> en
> > > la
> > > > vista. El trigger está sobre la vista, deberia activarse si


manipulo
> la
> > > > vista desde el enterprise manager ? en todo caso no lo hace, lo


cual
> > > supone
> > > > un problema grave para la consistencia de los datos de las tablas


q
> > > integran
> > > > la vista.
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > "Miguel Egea" escribió en el
> mensaje
> > > > news:
> > > > > los triggers se disparan sobre los objetos que se crean, es


decir
si
> > vas
> > > a
> > > > > las tablas directamente el trigger no se dispara, tendrías que
poner
> > > otro
> > > > > trigger en la tabla, si quieres que se hagan inserciones solo
desde
> tu
> > > > otro
> > > > > trigger puedes usar un truqillo como este
> > > > >
> > > >
> > >
> >
>



http://www.configuracionesintegrale...?articulo%
> > > > > 4
> > > > >
> > > > > Saludos
> > > > > Miguel Egea
> > > > > "Kano" <kano01ATterra.es> escribió en el mensaje
> > > > > news:
> > > > > > Buenas he creado una vista con un join de dos tablas, el caso
esq
> > > quiero
> > > > > > insertar datos mediante la vista. Declaro un trigger de prueba
> sobre
> > > la
> > > > > > vista del tipo Insteado of Insert para q me capture las
> inserciones.
> > > > > > begin
> > > > > > -
> > > > > > select * from inserted
> > > > > > select CodigoMtoPersonal,null as
> > > > > >
> > > > >
> > > >
> > >
> >
>



Codigo400,Nif,ViaPublica,Numero,CodigoMunicipio,FechaAplicacion,FechaObsolet
> > > > > > o,Email,Web from inserted


personal
> > > > > > select
> > > > > >
> > > > >
> > > >
> > >
> >
>



CodigoMtoPersonal,FechaNacimiento,FechaIngreso,FechaSalida,CodigoEstadoSocia
> > > > > > l,Login,PwdHash,Nombre,Apellido1,Apellido2 from inserted
> > > > > >
> > > > > >
> > > > > >
> > > > > > end
> > > > > >
> > > > > > con este codigo no deberia insertar, pero cuando manipulo
> > directamente
> > > > la
> > > > > > tabla mediante el enterprise manager la informacion q inserto
> queda
> > > > > > almacenada en la primera tabla solamente, es decir el trigger
> > instead
> > > of
> > > > > no
> > > > > > se dispara, podriais indicarme porque o como lo soluciono?
> > > > > >
> > > > > > Gracias por adelantado
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#8 Kano
15/04/2004 - 11:52 | Informe spam
Por supuesto:
este es el codigo de la vista
SELECT dbo.MtoPersonal.CodigoMtoPersonal, dbo.MtoPersonal.Nombre,
dbo.MtoPersonal.Apellido1, dbo.MtoPersonal.Apellido2,
dbo.MtoClienteProveedorPersonal.Nif,
dbo.MtoClienteProveedorPersonal.CodigoMunicipio,
dbo.MtoClienteProveedorPersonal.ViaPublica,
dbo.MtoClienteProveedorPersonal.Numero,
dbo.MtoPersonal.FechaNacimiento, dbo.MtoPersonal.FechaIngreso,
dbo.MtoPersonal.FechaSalida,
dbo.MtoPersonal.CodigoEstadoSocial,
dbo.MtoClienteProveedorPersonal.Email, dbo.MtoClienteProveedorPersonal.Web,
dbo.MtoPersonal.Login,
dbo.MtoPersonal.PwdHash,
dbo.MtoClienteProveedorPersonal.Codig400,
dbo.MtoClienteProveedorPersonal.FechaAplicacion,
dbo.MtoClienteProveedorPersonal.FechaObsoleto
FROM dbo.MtoPersonal INNER JOIN
dbo.MtoClienteProveedorPersonal ON
dbo.MtoPersonal.CodigoMtoPersonal dbo.MtoClienteProveedorPersonal.CodigoMtoClienteProveedorPersona
<--
Y este es el codigo del trigger



CREATE trigger Trig_ on VtaPersonal
INSTEAD OF insert
as
begin


insert into MtoClienteProveedorPersonal
select null as Codigo400, Nif,ViaPublica
,Numero,CodigoMunicipio,FechaAplicacion,FechaObsoleto,Email,Web from
inserted

Insert MtoPersonal
select SCOPE_IDENTITY() AS
CodigoPersonal,FechaNacimiento,FechaIngreso,FechaSalida,CodigoEstadoSocial,L
ogin,PwdHash,Nombre,Apellido1,Apellido2 from inserted



end
<--

Gracias por adelantado!



"Adrian D. Garcia" escribió en el mensaje
news:
Ok, puedes pasarnos el script completo de la vista mas el script del


trigger
instead of?

Saludos

Adrian D. Garcia
NDSoft
MCSD
"Kano" <kano01ATterra.es> escribió en el mensaje
news:%
> no no .. simplemente no se ejecuta el trigger ... voy a las tablas donde
> deberia insetar los datos y no lo hace simplemente por su cuenta inserta
los
> valores en una de las dos tablas y en la otra no lo hace (son 2 tablas)
>
>
>
>
> "Adrian D. Garcia" escribió en el


mensaje
> news:
> > Has intendado realizar la modificacion desde el Enterprise Manager,
> moverte
> > luego de fila y despues volver a ejecutar la consulta de la vista?
> > Es muy posible que los cambios no los veas en el enterprise manager en
el
> > momento ya que el cree que solo se han cambiado los datos que estas
> editando
> > y lo lo que realmente este haciendo el trigger instead of.
> >
> > Saludos
> >
> > Adrian D. Garcia
> > NDSoft
> > MCSD
> > "Kano" <kano01ATterra.es> escribió en el mensaje
> > news:
> > > bueno, me expresé mal .. lo q quiero decir esq cuando manipulo
> > directamente
> > > la vista, se me guardan los cambios en una de las dos tablas q


entran
en
> > la
> > > vista. El trigger está sobre la vista, deberia activarse si manipulo
la
> > > vista desde el enterprise manager ? en todo caso no lo hace, lo cual
> > supone
> > > un problema grave para la consistencia de los datos de las tablas q
> > integran
> > > la vista.
> > >
> > >
> > >
> > >
> > >
> > >
> > > "Miguel Egea" escribió en el
mensaje
> > > news:
> > > > los triggers se disparan sobre los objetos que se crean, es decir


si
> vas
> > a
> > > > las tablas directamente el trigger no se dispara, tendrías que


poner
> > otro
> > > > trigger en la tabla, si quieres que se hagan inserciones solo


desde
tu
> > > otro
> > > > trigger puedes usar un truqillo como este
> > > >
> > >
> >
>



http://www.configuracionesintegrale...?articulo%
> > > > 4
> > > >
> > > > Saludos
> > > > Miguel Egea
> > > > "Kano" <kano01ATterra.es> escribió en el mensaje
> > > > news:
> > > > > Buenas he creado una vista con un join de dos tablas, el caso


esq
> > quiero
> > > > > insertar datos mediante la vista. Declaro un trigger de prueba
sobre
> > la
> > > > > vista del tipo Insteado of Insert para q me capture las
inserciones.
> > > > > begin
> > > > > -
> > > > > select * from inserted
> > > > > select CodigoMtoPersonal,null as
> > > > >
> > > >
> > >
> >
>



Codigo400,Nif,ViaPublica,Numero,CodigoMunicipio,FechaAplicacion,FechaObsolet
> > > > > o,Email,Web from inserted
> > > > > select
> > > > >
> > > >
> > >
> >
>



CodigoMtoPersonal,FechaNacimiento,FechaIngreso,FechaSalida,CodigoEstadoSocia
> > > > > l,Login,PwdHash,Nombre,Apellido1,Apellido2 from inserted
> > > > >
> > > > >
> > > > >
> > > > > end
> > > > >
> > > > > con este codigo no deberia insertar, pero cuando manipulo
> directamente
> > > la
> > > > > tabla mediante el enterprise manager la informacion q inserto
queda
> > > > > almacenada en la primera tabla solamente, es decir el trigger
> instead
> > of
> > > > no
> > > > > se dispara, podriais indicarme porque o como lo soluciono?
> > > > >
> > > > > Gracias por adelantado
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#9 Javier Loria
15/04/2004 - 16:16 | Informe spam
Hola Kano:
Si Miguel me permite.
El SCOPE_IDENTITY() devuelve un unico valor, por lo que no puedes usarlo
en el SELECT como lo estas usando.
En mi opinion (en realidad la opinion de algunos autores reciclada por
mi), los Identities hacen pesima labor como llaves primarias precisamente
por lo que te ocurre en el Trigger, que no puedes identificar y separa una
fila, porque la llave se crea en el instante de insercion.
Si asumimos que la columna Nif es la llave primaria natural o por lo
menos una llave candidata de la tabla MtoClienteProveedorPersonal (Que no se
repita y que no soporte nulos). Entonces podrias reparar la cosa cambiando
el segundo Insert por:
=Insert into MtoPersonal (...)
select MtoPersonal.CodigoMtoPersonal
, inserted.FechaNacimiento
, inserted.FechaIngreso
, inserted.FechaSalida
, inserted.CodigoEstadoSocial
, inserted.Login
, inserted.PwdHash
, inserted.Nombre
, inserted.Apellido1
, inserted.Apellido2
INNER inserted join MtoClienteProveedorPersonal
ON inserted.nif=MtoClienteProveedorPersonal.nif
== Es importante que en el INSERT pongas las columnas entre parentisis y
particularmente importante que lo hagas cuando esta dentro de un trigger,
para que luego sea facil darle mantenimiento al codigo, no sea que despues
agregues una columna a la tabla y se descomponga al aplicacion.
<<<los amantes de los identities, pueden dejar de leer aqui>>>
Por ultimo, el uso del identity hace que la aplicacion en este caso sea
mas lenta, ya que como tienes la llave natural (que te la da el usuario)
debes pasar por la tabla MtoClienteProveedorPersonal para averigual el valor
del numero del registro (ya no es una fila sino un registro) haciendo la
aplicacion mas lenta :(
<<<los amantes de los identities, pueden volver a leer aqui>>> :)
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


Kano <kano01ATterra.es> escribio:
Por supuesto:
este es el codigo de la vista
SELECT dbo.MtoPersonal.CodigoMtoPersonal, dbo.MtoPersonal.Nombre,
dbo.MtoPersonal.Apellido1, dbo.MtoPersonal.Apellido2,
dbo.MtoClienteProveedorPersonal.Nif,
dbo.MtoClienteProveedorPersonal.CodigoMunicipio,
dbo.MtoClienteProveedorPersonal.ViaPublica,
dbo.MtoClienteProveedorPersonal.Numero,
dbo.MtoPersonal.FechaNacimiento, dbo.MtoPersonal.FechaIngreso,
dbo.MtoPersonal.FechaSalida,
dbo.MtoPersonal.CodigoEstadoSocial,
dbo.MtoClienteProveedorPersonal.Email,
dbo.MtoClienteProveedorPersonal.Web, dbo.MtoPersonal.Login,
dbo.MtoPersonal.PwdHash,
dbo.MtoClienteProveedorPersonal.Codig400,
dbo.MtoClienteProveedorPersonal.FechaAplicacion,
dbo.MtoClienteProveedorPersonal.FechaObsoleto
FROM dbo.MtoPersonal INNER JOIN
dbo.MtoClienteProveedorPersonal ON
dbo.MtoPersonal.CodigoMtoPersonal > dbo.MtoClienteProveedorPersonal.CodigoMtoClienteProveedorPersona
<--
Y este es el codigo del trigger



CREATE trigger Trig_ on VtaPersonal
INSTEAD OF insert
as
begin


insert into MtoClienteProveedorPersonal
select null as Codigo400, Nif,ViaPublica
,Numero,CodigoMunicipio,FechaAplicacion,FechaObsoleto,Email,Web from
inserted

Insert MtoPersonal
select SCOPE_IDENTITY() AS



CodigoPersonal,FechaNacimiento,FechaIngreso,FechaSalida,CodigoEstadoSocial,L
ogin,PwdHash,Nombre,Apellido1,Apellido2 from inserted



end
<--

Gracias por adelantado!



"Adrian D. Garcia" escribió en el
mensaje news:
Ok, puedes pasarnos el script completo de la vista mas el script del
trigger instead of?

Saludos

Adrian D. Garcia
NDSoft
MCSD
"Kano" <kano01ATterra.es> escribió en el mensaje
news:%
no no .. simplemente no se ejecuta el trigger ... voy a las tablas
donde deberia insetar los datos y no lo hace simplemente por su
cuenta inserta los valores en una de las dos tablas y en la otra no
lo hace (son 2 tablas)




"Adrian D. Garcia" escribió en el
mensaje news:
Has intendado realizar la modificacion desde el Enterprise
Manager, moverte luego de fila y despues volver a ejecutar la
consulta de la vista?
Es muy posible que los cambios no los veas en el enterprise
manager en el momento ya que el cree que solo se han cambiado los
datos que estas editando y lo lo que realmente este haciendo el
trigger instead of.

Saludos

Adrian D. Garcia
NDSoft
MCSD
"Kano" <kano01ATterra.es> escribió en el mensaje
news:
bueno, me expresé mal .. lo q quiero decir esq cuando manipulo
directamente la vista, se me guardan los cambios en una de las
dos tablas q








entran
en
la
vista. El trigger está sobre la vista, deberia activarse si
manipulo la vista desde el enterprise manager ? en todo caso no
lo hace, lo cual supone un problema grave para la consistencia de
los datos de las tablas q integran la vista.






"Miguel Egea" escribió en el
mensaje news:
los triggers se disparan sobre los objetos que se crean, es decir










si
vas
a
las tablas directamente el trigger no se dispara, tendrías que
poner otro trigger en la tabla, si quieres que se hagan
inserciones solo










desde
tu
otro
trigger puedes usar un truqillo como este


















http://www.configuracionesintegrale...?articulo%
4

Saludos
Miguel Egea
"Kano" <kano01ATterra.es> escribió en el mensaje
news:
Buenas he creado una vista con un join de dos tablas, el caso
esq quiero insertar datos mediante la vista. Declaro un trigger
de prueba sobre la vista del tipo Insteado of Insert para q me
capture las inserciones. begin
-
select * from inserted
select CodigoMtoPersonal,null as





















Codigo400,Nif,ViaPublica,Numero,CodigoMunicipio,FechaAplicacion,FechaObsolet
o,Email,Web from inserted
select





















CodigoMtoPersonal,FechaNacimiento,FechaIngreso,FechaSalida,CodigoEstadoSocia
l,Login,PwdHash,Nombre,Apellido1,Apellido2 from inserted



end

con este codigo no deberia insertar, pero cuando manipulo
directamente la tabla mediante el enterprise manager la
informacion q inserto queda almacenada en la primera tabla
solamente, es decir el trigger








instead
of
no
se dispara, podriais indicarme porque o como lo soluciono?

Gracias por adelantado
Respuesta Responder a este mensaje
#10 Kano
16/04/2004 - 09:54 | Informe spam
uf ... en principio el nif no puede ser clave principal por motivos de
diseño y de datos (hay datos preexistentes bastante poco consitentes.)
de todas maneras te tomo la palabra con respecto a los Identities y rehare
la parte de los codigos ...
Muchas gracias !!!


"Javier Loria" escribió en el mensaje
news:
Hola Kano:
Si Miguel me permite.
El SCOPE_IDENTITY() devuelve un unico valor, por lo que no puedes


usarlo
en el SELECT como lo estas usando.
En mi opinion (en realidad la opinion de algunos autores reciclada por
mi), los Identities hacen pesima labor como llaves primarias precisamente
por lo que te ocurre en el Trigger, que no puedes identificar y separa una
fila, porque la llave se crea en el instante de insercion.
Si asumimos que la columna Nif es la llave primaria natural o por lo
menos una llave candidata de la tabla MtoClienteProveedorPersonal (Que no


se
repita y que no soporte nulos). Entonces podrias reparar la cosa cambiando
el segundo Insert por:
=> Insert into MtoPersonal (...)
select MtoPersonal.CodigoMtoPersonal
, inserted.FechaNacimiento
, inserted.FechaIngreso
, inserted.FechaSalida
, inserted.CodigoEstadoSocial
, inserted.Login
, inserted.PwdHash
, inserted.Nombre
, inserted.Apellido1
, inserted.Apellido2
INNER inserted join MtoClienteProveedorPersonal
ON inserted.nif=MtoClienteProveedorPersonal.nif
==> Es importante que en el INSERT pongas las columnas entre parentisis y
particularmente importante que lo hagas cuando esta dentro de un trigger,
para que luego sea facil darle mantenimiento al codigo, no sea que despues
agregues una columna a la tabla y se descomponga al aplicacion.
<<<los amantes de los identities, pueden dejar de leer aqui>>>
Por ultimo, el uso del identity hace que la aplicacion en este caso


sea
mas lenta, ya que como tienes la llave natural (que te la da el usuario)
debes pasar por la tabla MtoClienteProveedorPersonal para averigual el


valor
del numero del registro (ya no es una fila sino un registro) haciendo la
aplicacion mas lenta :(
<<<los amantes de los identities, pueden volver a leer aqui>>> :)
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


Kano <kano01ATterra.es> escribio:
> Por supuesto:
> este es el codigo de la vista
> SELECT dbo.MtoPersonal.CodigoMtoPersonal, dbo.MtoPersonal.Nombre,
> dbo.MtoPersonal.Apellido1, dbo.MtoPersonal.Apellido2,
> dbo.MtoClienteProveedorPersonal.Nif,
> dbo.MtoClienteProveedorPersonal.CodigoMunicipio,
> dbo.MtoClienteProveedorPersonal.ViaPublica,
> dbo.MtoClienteProveedorPersonal.Numero,
> dbo.MtoPersonal.FechaNacimiento, dbo.MtoPersonal.FechaIngreso,
> dbo.MtoPersonal.FechaSalida,
> dbo.MtoPersonal.CodigoEstadoSocial,
> dbo.MtoClienteProveedorPersonal.Email,
> dbo.MtoClienteProveedorPersonal.Web, dbo.MtoPersonal.Login,
> dbo.MtoPersonal.PwdHash,
> dbo.MtoClienteProveedorPersonal.Codig400,
> dbo.MtoClienteProveedorPersonal.FechaAplicacion,
> dbo.MtoClienteProveedorPersonal.FechaObsoleto
> FROM dbo.MtoPersonal INNER JOIN
> dbo.MtoClienteProveedorPersonal ON
> dbo.MtoPersonal.CodigoMtoPersonal > > dbo.MtoClienteProveedorPersonal.CodigoMtoClienteProveedorPersona
> <--
> Y este es el codigo del trigger
>
>
>
> CREATE trigger Trig_ on VtaPersonal
> INSTEAD OF insert
> as
> begin
>
>
> insert into MtoClienteProveedorPersonal
> select null as Codigo400, Nif,ViaPublica
> ,Numero,CodigoMunicipio,FechaAplicacion,FechaObsoleto,Email,Web from
> inserted
>
> Insert MtoPersonal
> select SCOPE_IDENTITY() AS
>



CodigoPersonal,FechaNacimiento,FechaIngreso,FechaSalida,CodigoEstadoSocial,L
> ogin,PwdHash,Nombre,Apellido1,Apellido2 from inserted
>
>
>
> end
> <--
>
> Gracias por adelantado!
>
>
>
> "Adrian D. Garcia" escribió en el
> mensaje news:
>> Ok, puedes pasarnos el script completo de la vista mas el script del
>> trigger instead of?
>>
>> Saludos
>>
>> Adrian D. Garcia
>> NDSoft
>> MCSD
>> "Kano" <kano01ATterra.es> escribió en el mensaje
>> news:%
>>> no no .. simplemente no se ejecuta el trigger ... voy a las tablas
>>> donde deberia insetar los datos y no lo hace simplemente por su
>>> cuenta inserta los valores en una de las dos tablas y en la otra no
>>> lo hace (son 2 tablas)
>>>
>>>
>>>
>>>
>>> "Adrian D. Garcia" escribió en el
>>> mensaje news:
>>>> Has intendado realizar la modificacion desde el Enterprise
>>>> Manager, moverte luego de fila y despues volver a ejecutar la
>>>> consulta de la vista?
>>>> Es muy posible que los cambios no los veas en el enterprise
>>>> manager en el momento ya que el cree que solo se han cambiado los
>>>> datos que estas editando y lo lo que realmente este haciendo el
>>>> trigger instead of.
>>>>
>>>> Saludos
>>>>
>>>> Adrian D. Garcia
>>>> NDSoft
>>>> MCSD
>>>> "Kano" <kano01ATterra.es> escribió en el mensaje
>>>> news:
>>>>> bueno, me expresé mal .. lo q quiero decir esq cuando manipulo
>>>>> directamente la vista, se me guardan los cambios en una de las
>>>>> dos tablas q
> entran
>> en
>>>> la
>>>>> vista. El trigger está sobre la vista, deberia activarse si
>>>>> manipulo la vista desde el enterprise manager ? en todo caso no
>>>>> lo hace, lo cual supone un problema grave para la consistencia de
>>>>> los datos de las tablas q integran la vista.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> "Miguel Egea" escribió en el
>>>>> mensaje news:
>>>>>> los triggers se disparan sobre los objetos que se crean, es decir
> si
>>> vas
>>>> a
>>>>>> las tablas directamente el trigger no se dispara, tendrías que
>>>>>> poner otro trigger en la tabla, si quieres que se hagan
>>>>>> inserciones solo
> desde
>> tu
>>>>> otro
>>>>>> trigger puedes usar un truqillo como este
>>>>>>
>>>>>
>>>>
>>>
>>
>



http://www.configuracionesintegrale...?articulo%
>>>>>> 4
>>>>>>
>>>>>> Saludos
>>>>>> Miguel Egea
>>>>>> "Kano" <kano01ATterra.es> escribió en el mensaje
>>>>>> news:
>>>>>>> Buenas he creado una vista con un join de dos tablas, el caso
>>>>>>> esq quiero insertar datos mediante la vista. Declaro un trigger
>>>>>>> de prueba sobre la vista del tipo Insteado of Insert para q me
>>>>>>> capture las inserciones. begin
>>>>>>> -
>>>>>>> select * from inserted
>>>>>>> select CodigoMtoPersonal,null as
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>



Codigo400,Nif,ViaPublica,Numero,CodigoMunicipio,FechaAplicacion,FechaObsolet
>>>>>>> o,Email,Web from inserted
>>>>>>> select
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>



CodigoMtoPersonal,FechaNacimiento,FechaIngreso,FechaSalida,CodigoEstadoSocia
>>>>>>> l,Login,PwdHash,Nombre,Apellido1,Apellido2 from inserted
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> end
>>>>>>>
>>>>>>> con este codigo no deberia insertar, pero cuando manipulo
>>>>>>> directamente la tabla mediante el enterprise manager la
>>>>>>> informacion q inserto queda almacenada en la primera tabla
>>>>>>> solamente, es decir el trigger
>>> instead
>>>> of
>>>>>> no
>>>>>>> se dispara, podriais indicarme porque o como lo soluciono?
>>>>>>>
>>>>>>> Gracias por adelantado



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida