Duda para Trigger INSTEAD OF

25/02/2004 - 19:21 por AC | Informe spam
Hola,

Para SQL2000.

Uso 'Trigger Instead Of Update' para efectuar una validaciones antes del
Update. Si pasan las validaciones efectúo el Update.

Problema que se me plantea: la relación entre la TABLA a actualizar,
INSERTED y DELETED. Los nuevos datos los tengo en la INSERTED y con ellos
efectúo el Update en TABLA, pero ¿ y si se ha realizado una modificación en
la Primary Key?

¿Cómo sé cuál es la correspondencia entre TABLA e INSERTED ? Insisto en que
sólo tengo el problema en el supuesto de que se ha podido modificar la
Primary Key y además el trigger se dispara para varias filas.

Creo que algo no lo he entendido bien o me falta imponer alguna condición.

Agradecería mucho cualquier comentario.

Saludos

AC

Preguntas similare

Leer las respuestas

#6 Maximiliano Damian Accotto
25/02/2004 - 23:58 | Informe spam
Bue no era para entrar en debate solo para decir una alternativa mas y claro
que hay que analizar muchas cosas siempre antes de tomar una determinacion!
solo comento como lo pude resolver de forma simple y tambien como lo vi que
lo resolvieron algunas empresas de ERP, pero no entremos en discusion no
tiene sentido ;-)

Bye


Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Miguel Egea" escribió en el mensaje
news:eJqwcG$%
uff, lo que dices supone entrar en un debate que tuvimos hace tiempo y que
resumión bien carlos sacristan para la posteridad. Que si identity si que


si
no.. :-), en ocasiones no puede cambiarse un diseño... en fin,... muchas
consideraciones, :-)


=> Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
Aviso de Seguridad



http://www.microsoft.com/spain/tech...9-USER.asp
==>

"Maximiliano Damian Accotto" escribió
en el mensaje news:O0UTz9%23%
> Si!! o poner en cada tabla un campo identity solo como marcador cosa que
> nunca cambiara el usuario por el Cliente y te armas el link sin


problemas
> ;-), esto es para evitar el Delete Insert, pero claro debes poner un


campo
> identuty no!!
>
> Bye
>
>
> Salu2 enormes
>
> Maximiliano Damian Accotto
>
> Fundicion San Cayetano S.A.
> Gerente de IT
> Buenos Aires - Argentina
> -
> Desarrollador 3 estrellas
>


http://www.microsoft.com/spanish/ms...efault.asp
> -
> (maxi_accotto[arroba]speedy.com.ar)
> MSN:
> -
>
> "Miguel Egea" escribió en el mensaje
> news:uwBFjp%23%
> > El propio sql tiene ese problema y lo resuelve de la siguiente forma.


Si
> no
> > actualizas la pk (puedes comprobarlo de varias formas, ..) lanza un
> comando
> > de update tal cual. Sin embargo si lo que haces es lo que tu comentas,
> hace
> > un borrado primero de los elementos de la tabla deleted y después un
> insert
> > de los de la tabla inserted.
> > Hay varias formas de comprobarlo. Si usas replicación puedes ver que
manda
> > dos comandos uno de insert y uno de delete, si no , con consultar el


log
> > (sergio monteiro publicó ayer como verlo), puedes comprobar que es


así.
> >
> > Saludos cordiales
> > => > > Miguel Egea
> > http://www.portalsql.com
> > Microsoft SQL-SERVER MVP.
> > Brigada Anti-Cursores
> > Aviso de Seguridad
> >
>



http://www.microsoft.com/spain/tech...9-USER.asp
> > ==> > >
> > "AC" escribió en el mensaje
> > news:c1ip38$en6$
> > > Hola,
> > >
> > > Para SQL2000.
> > >
> > > Uso 'Trigger Instead Of Update' para efectuar una validaciones antes
del
> > > Update. Si pasan las validaciones efectúo el Update.
> > >
> > > Problema que se me plantea: la relación entre la TABLA a actualizar,
> > > INSERTED y DELETED. Los nuevos datos los tengo en la INSERTED y con
> ellos
> > > efectúo el Update en TABLA, pero ¿ y si se ha realizado una
modificación
> > en
> > > la Primary Key?
> > >
> > > ¿Cómo sé cuál es la correspondencia entre TABLA e INSERTED ? Insisto
en
> > que
> > > sólo tengo el problema en el supuesto de que se ha podido modificar


la
> > > Primary Key y además el trigger se dispara para varias filas.
> > >
> > > Creo que algo no lo he entendido bien o me falta imponer alguna
> condición.
> > >
> > > Agradecería mucho cualquier comentario.
> > >
> > > Saludos
> > >
> > > AC
> > >
> > >
> >
> >
>
>
>


Respuesta Responder a este mensaje
#7 AC
26/02/2004 - 16:27 | Informe spam
Muy agradecido por todos vuestros comentarios.

Sólo una cuestión más. En una de sus respuestas hablan de 'las diversas
formas en que se puede saber si se ha modificado la primary key'. No acabo
de ver cómo lo puedo saber en el caso de que el trigger afecte a varias
filas y naturalmente unas pueden tener la PK modificada y otras no.

Gracias de antemano por su interés. Saludos.
AC


"Maximiliano Damian Accotto" escribió
en el mensaje news:uzXqgL$%
Bue no era para entrar en debate solo para decir una alternativa mas y


claro
que hay que analizar muchas cosas siempre antes de tomar una


determinacion!
solo comento como lo pude resolver de forma simple y tambien como lo vi


que
lo resolvieron algunas empresas de ERP, pero no entremos en discusion no
tiene sentido ;-)

Bye


Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Miguel Egea" escribió en el mensaje
news:eJqwcG$%
> uff, lo que dices supone entrar en un debate que tuvimos hace tiempo y


que
> resumión bien carlos sacristan para la posteridad. Que si identity si


que
si
> no.. :-), en ocasiones no puede cambiarse un diseño... en fin,... muchas
> consideraciones, :-)
>
>
> => > Miguel Egea
> http://www.portalsql.com
> Microsoft SQL-SERVER MVP.
> Brigada Anti-Cursores
> Aviso de Seguridad
>



http://www.microsoft.com/spain/tech...9-USER.asp
> ==> >
>
> "Maximiliano Damian Accotto"


escribió
> en el mensaje news:O0UTz9%23%
> > Si!! o poner en cada tabla un campo identity solo como marcador cosa


que
> > nunca cambiara el usuario por el Cliente y te armas el link sin
problemas
> > ;-), esto es para evitar el Delete Insert, pero claro debes poner un
campo
> > identuty no!!
> >
> > Bye
> >
> >
> > Salu2 enormes
> >
> > Maximiliano Damian Accotto
> >
> > Fundicion San Cayetano S.A.
> > Gerente de IT
> > Buenos Aires - Argentina
> > -
> > Desarrollador 3 estrellas
> >
http://www.microsoft.com/spanish/ms...efault.asp
> > -
> > (maxi_accotto[arroba]speedy.com.ar)
> > MSN:
> > -
> >
> > "Miguel Egea" escribió en el


mensaje
> > news:uwBFjp%23%
> > > El propio sql tiene ese problema y lo resuelve de la siguiente


forma.
Si
> > no
> > > actualizas la pk (puedes comprobarlo de varias formas, ..) lanza un
> > comando
> > > de update tal cual. Sin embargo si lo que haces es lo que tu


comentas,
> > hace
> > > un borrado primero de los elementos de la tabla deleted y después un
> > insert
> > > de los de la tabla inserted.
> > > Hay varias formas de comprobarlo. Si usas replicación puedes ver que
> manda
> > > dos comandos uno de insert y uno de delete, si no , con consultar el
log
> > > (sergio monteiro publicó ayer como verlo), puedes comprobar que es
así.
> > >
> > > Saludos cordiales
> > > => > > > Miguel Egea
> > > http://www.portalsql.com
> > > Microsoft SQL-SERVER MVP.
> > > Brigada Anti-Cursores
> > > Aviso de Seguridad
> > >
> >
>



http://www.microsoft.com/spain/tech...9-USER.asp
> > > ==> > > >
> > > "AC" escribió en el mensaje
> > > news:c1ip38$en6$
> > > > Hola,
> > > >
> > > > Para SQL2000.
> > > >
> > > > Uso 'Trigger Instead Of Update' para efectuar una validaciones


antes
> del
> > > > Update. Si pasan las validaciones efectúo el Update.
> > > >
> > > > Problema que se me plantea: la relación entre la TABLA a


actualizar,
> > > > INSERTED y DELETED. Los nuevos datos los tengo en la INSERTED y


con
> > ellos
> > > > efectúo el Update en TABLA, pero ¿ y si se ha realizado una
> modificación
> > > en
> > > > la Primary Key?
> > > >
> > > > ¿Cómo sé cuál es la correspondencia entre TABLA e INSERTED ?


Insisto
> en
> > > que
> > > > sólo tengo el problema en el supuesto de que se ha podido


modificar
la
> > > > Primary Key y además el trigger se dispara para varias filas.
> > > >
> > > > Creo que algo no lo he entendido bien o me falta imponer alguna
> > condición.
> > > >
> > > > Agradecería mucho cualquier comentario.
> > > >
> > > > Saludos
> > > >
> > > > AC
> > > >
> > > >
> > >
> > >
> >
> >
> >
>
>


Respuesta Responder a este mensaje
#8 Maximiliano D. A.
26/02/2004 - 16:34 | Informe spam
Si no usas una clave artificial para determinar que cosas cambiaron se hara
dificil, por eso Miguel dijo que primero borras y luego insertas ;-)

Bye


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"AC" escribió en el mensaje
news:c1l39g$5on$
Muy agradecido por todos vuestros comentarios.

Sólo una cuestión más. En una de sus respuestas hablan de 'las diversas
formas en que se puede saber si se ha modificado la primary key'. No acabo
de ver cómo lo puedo saber en el caso de que el trigger afecte a varias
filas y naturalmente unas pueden tener la PK modificada y otras no.

Gracias de antemano por su interés. Saludos.
AC


"Maximiliano Damian Accotto" escribió
en el mensaje news:uzXqgL$%
> Bue no era para entrar en debate solo para decir una alternativa mas y
claro
> que hay que analizar muchas cosas siempre antes de tomar una
determinacion!
> solo comento como lo pude resolver de forma simple y tambien como lo vi
que
> lo resolvieron algunas empresas de ERP, pero no entremos en discusion no
> tiene sentido ;-)
>
> Bye
>
>
> Salu2 enormes
>
> Maximiliano Damian Accotto
>
> Fundicion San Cayetano S.A.
> Gerente de IT
> Buenos Aires - Argentina
> -
> Desarrollador 3 estrellas
>


http://www.microsoft.com/spanish/ms...efault.asp
> -
> (maxi_accotto[arroba]speedy.com.ar)
> MSN:
> -
>
> "Miguel Egea" escribió en el mensaje
> news:eJqwcG$%
> > uff, lo que dices supone entrar en un debate que tuvimos hace tiempo y
que
> > resumión bien carlos sacristan para la posteridad. Que si identity si
que
> si
> > no.. :-), en ocasiones no puede cambiarse un diseño... en fin,...


muchas
> > consideraciones, :-)
> >
> >
> > => > > Miguel Egea
> > http://www.portalsql.com
> > Microsoft SQL-SERVER MVP.
> > Brigada Anti-Cursores
> > Aviso de Seguridad
> >
>



http://www.microsoft.com/spain/tech...9-USER.asp
> > ==> > >
> >
> > "Maximiliano Damian Accotto"
escribió
> > en el mensaje news:O0UTz9%23%
> > > Si!! o poner en cada tabla un campo identity solo como marcador cosa
que
> > > nunca cambiara el usuario por el Cliente y te armas el link sin
> problemas
> > > ;-), esto es para evitar el Delete Insert, pero claro debes poner un
> campo
> > > identuty no!!
> > >
> > > Bye
> > >
> > >
> > > Salu2 enormes
> > >
> > > Maximiliano Damian Accotto
> > >
> > > Fundicion San Cayetano S.A.
> > > Gerente de IT
> > > Buenos Aires - Argentina
> > > -
> > > Desarrollador 3 estrellas
> > >
>


http://www.microsoft.com/spanish/ms...efault.asp
> > > -
> > > (maxi_accotto[arroba]speedy.com.ar)
> > > MSN:
> > > -
> > >
> > > "Miguel Egea" escribió en el
mensaje
> > > news:uwBFjp%23%
> > > > El propio sql tiene ese problema y lo resuelve de la siguiente
forma.
> Si
> > > no
> > > > actualizas la pk (puedes comprobarlo de varias formas, ..) lanza


un
> > > comando
> > > > de update tal cual. Sin embargo si lo que haces es lo que tu
comentas,
> > > hace
> > > > un borrado primero de los elementos de la tabla deleted y después


un
> > > insert
> > > > de los de la tabla inserted.
> > > > Hay varias formas de comprobarlo. Si usas replicación puedes ver


que
> > manda
> > > > dos comandos uno de insert y uno de delete, si no , con consultar


el
> log
> > > > (sergio monteiro publicó ayer como verlo), puedes comprobar que es
> así.
> > > >
> > > > Saludos cordiales
> > > > => > > > > Miguel Egea
> > > > http://www.portalsql.com
> > > > Microsoft SQL-SERVER MVP.
> > > > Brigada Anti-Cursores
> > > > Aviso de Seguridad
> > > >
> > >
> >
>



http://www.microsoft.com/spain/tech...9-USER.asp
> > > > ==> > > > >
> > > > "AC" escribió en el mensaje
> > > > news:c1ip38$en6$
> > > > > Hola,
> > > > >
> > > > > Para SQL2000.
> > > > >
> > > > > Uso 'Trigger Instead Of Update' para efectuar una validaciones
antes
> > del
> > > > > Update. Si pasan las validaciones efectúo el Update.
> > > > >
> > > > > Problema que se me plantea: la relación entre la TABLA a
actualizar,
> > > > > INSERTED y DELETED. Los nuevos datos los tengo en la INSERTED y
con
> > > ellos
> > > > > efectúo el Update en TABLA, pero ¿ y si se ha realizado una
> > modificación
> > > > en
> > > > > la Primary Key?
> > > > >
> > > > > ¿Cómo sé cuál es la correspondencia entre TABLA e INSERTED ?
Insisto
> > en
> > > > que
> > > > > sólo tengo el problema en el supuesto de que se ha podido
modificar
> la
> > > > > Primary Key y además el trigger se dispara para varias filas.
> > > > >
> > > > > Creo que algo no lo he entendido bien o me falta imponer alguna
> > > condición.
> > > > >
> > > > > Agradecería mucho cualquier comentario.
> > > > >
> > > > > Saludos
> > > > >
> > > > > AC
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> > >
> >
> >
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 22/02/2004
Respuesta Responder a este mensaje
#9 Miguel Egea
26/02/2004 - 21:34 | Informe spam
puedes usar la función COLUMNS_UPDATED() o la funcio if update(columna),
revisa la ayuda de los libros en pantalla ahí lo explica.

i
=Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
Aviso de Seguridad
http://www.microsoft.com/spain/tech...9-USER.asp
==
"AC" escribió en el mensaje
news:c1l39g$5on$
Muy agradecido por todos vuestros comentarios.

Sólo una cuestión más. En una de sus respuestas hablan de 'las diversas
formas en que se puede saber si se ha modificado la primary key'. No acabo
de ver cómo lo puedo saber en el caso de que el trigger afecte a varias
filas y naturalmente unas pueden tener la PK modificada y otras no.

Gracias de antemano por su interés. Saludos.
AC


"Maximiliano Damian Accotto" escribió
en el mensaje news:uzXqgL$%
> Bue no era para entrar en debate solo para decir una alternativa mas y
claro
> que hay que analizar muchas cosas siempre antes de tomar una
determinacion!
> solo comento como lo pude resolver de forma simple y tambien como lo vi
que
> lo resolvieron algunas empresas de ERP, pero no entremos en discusion no
> tiene sentido ;-)
>
> Bye
>
>
> Salu2 enormes
>
> Maximiliano Damian Accotto
>
> Fundicion San Cayetano S.A.
> Gerente de IT
> Buenos Aires - Argentina
> -
> Desarrollador 3 estrellas
>


http://www.microsoft.com/spanish/ms...efault.asp
> -
> (maxi_accotto[arroba]speedy.com.ar)
> MSN:
> -
>
> "Miguel Egea" escribió en el mensaje
> news:eJqwcG$%
> > uff, lo que dices supone entrar en un debate que tuvimos hace tiempo y
que
> > resumión bien carlos sacristan para la posteridad. Que si identity si
que
> si
> > no.. :-), en ocasiones no puede cambiarse un diseño... en fin,...


muchas
> > consideraciones, :-)
> >
> >
> > => > > Miguel Egea
> > http://www.portalsql.com
> > Microsoft SQL-SERVER MVP.
> > Brigada Anti-Cursores
> > Aviso de Seguridad
> >
>



http://www.microsoft.com/spain/tech...9-USER.asp
> > ==> > >
> >
> > "Maximiliano Damian Accotto"
escribió
> > en el mensaje news:O0UTz9%23%
> > > Si!! o poner en cada tabla un campo identity solo como marcador cosa
que
> > > nunca cambiara el usuario por el Cliente y te armas el link sin
> problemas
> > > ;-), esto es para evitar el Delete Insert, pero claro debes poner un
> campo
> > > identuty no!!
> > >
> > > Bye
> > >
> > >
> > > Salu2 enormes
> > >
> > > Maximiliano Damian Accotto
> > >
> > > Fundicion San Cayetano S.A.
> > > Gerente de IT
> > > Buenos Aires - Argentina
> > > -
> > > Desarrollador 3 estrellas
> > >
>


http://www.microsoft.com/spanish/ms...efault.asp
> > > -
> > > (maxi_accotto[arroba]speedy.com.ar)
> > > MSN:
> > > -
> > >
> > > "Miguel Egea" escribió en el
mensaje
> > > news:uwBFjp%23%
> > > > El propio sql tiene ese problema y lo resuelve de la siguiente
forma.
> Si
> > > no
> > > > actualizas la pk (puedes comprobarlo de varias formas, ..) lanza


un
> > > comando
> > > > de update tal cual. Sin embargo si lo que haces es lo que tu
comentas,
> > > hace
> > > > un borrado primero de los elementos de la tabla deleted y después


un
> > > insert
> > > > de los de la tabla inserted.
> > > > Hay varias formas de comprobarlo. Si usas replicación puedes ver


que
> > manda
> > > > dos comandos uno de insert y uno de delete, si no , con consultar


el
> log
> > > > (sergio monteiro publicó ayer como verlo), puedes comprobar que es
> así.
> > > >
> > > > Saludos cordiales
> > > > => > > > > Miguel Egea
> > > > http://www.portalsql.com
> > > > Microsoft SQL-SERVER MVP.
> > > > Brigada Anti-Cursores
> > > > Aviso de Seguridad
> > > >
> > >
> >
>



http://www.microsoft.com/spain/tech...9-USER.asp
> > > > ==> > > > >
> > > > "AC" escribió en el mensaje
> > > > news:c1ip38$en6$
> > > > > Hola,
> > > > >
> > > > > Para SQL2000.
> > > > >
> > > > > Uso 'Trigger Instead Of Update' para efectuar una validaciones
antes
> > del
> > > > > Update. Si pasan las validaciones efectúo el Update.
> > > > >
> > > > > Problema que se me plantea: la relación entre la TABLA a
actualizar,
> > > > > INSERTED y DELETED. Los nuevos datos los tengo en la INSERTED y
con
> > > ellos
> > > > > efectúo el Update en TABLA, pero ¿ y si se ha realizado una
> > modificación
> > > > en
> > > > > la Primary Key?
> > > > >
> > > > > ¿Cómo sé cuál es la correspondencia entre TABLA e INSERTED ?
Insisto
> > en
> > > > que
> > > > > sólo tengo el problema en el supuesto de que se ha podido
modificar
> la
> > > > > Primary Key y además el trigger se dispara para varias filas.
> > > > >
> > > > > Creo que algo no lo he entendido bien o me falta imponer alguna
> > > condición.
> > > > >
> > > > > Agradecería mucho cualquier comentario.
> > > > >
> > > > > Saludos
> > > > >
> > > > > AC
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> > >
> >
> >
>
>



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