desencadenadores

11/11/2003 - 22:06 por Tolo | Informe spam
hola,

según he comentado en el msg anterior, tengo una tabla de lineas de facturas
con los campos: unidades, precio_unitario y total y mi intención es que el
desencadenador insert/update me calcule el total a partir de los valores de
unidades y precio_unitario.

para ello he creado el desencadenador:

CREATE TRIGGER Control_stock_linea ON dbo.T_linies
FOR INSERT, UPDATE
AS

update t_linies set total_bi=(unitats*preu_unitari)


pero el problema está en que esto no me modifica solamente el registro
actual, sino me modifica todos los registros de la BD y lo que mas miedo me
da es que me pueda mezclar los valores de las líneas.

muchísimas gracias

Preguntas similare

Leer las respuestas

#11 Accotto Maximiliano Damian
11/11/2003 - 23:39 | Informe spam
si el primer inserted se me escapo!! pero no puedes hacer un update o delete
a estas tablas virtuales.

Un abrazo

ACCOTTO MAXIMILIANO DAMIAN
GERENTE DE SISTEMAS
UN SALUDO MUY CORDIAL
" Tolo" escribió en el mensaje
news:
hola,

perdona, pero creo que el update sería:

update dbo.T_linies
set T_LINIES.total_bi=(inserted.unitats*inserted.preu_unitari) ...

no?

muchas gracias de nuevo



"Accotto Maximiliano D." escribió en


el
mensaje news:
> deberias hacerlo asi para q no te haga eso: TE PUSE EN MAYUSCULAS LOS
> CAMBIOS
>
> CREATE TRIGGER Control_stock_linea ON dbo.T_linies
> FOR INSERT, UPDATE
> AS
>
> update dbo.T_linies
> set INSERTED.total_bi=(INSERTED.unitats*INSERTED.preu_unitari)
> FROM dbo.T_linies INNER JOIN INSERTED ON
> (AQUI EL VINCULO ENTRE AMBAS TABLAS, SEGURO Q DEBERAS PONER NRO FACTURA


Y
> NUMERO LINEA)
>
> Espero q te halla sido util
>
> Un abrazo
>
>
> Accotto Maximiliano Damian
> > hola,
> >
> > según he comentado en el msg anterior, tengo una tabla de lineas de
> facturas
> > con los campos: unidades, precio_unitario y total y mi intención es


que
el
> > desencadenador insert/update me calcule el total a partir de los


valores
> de
> > unidades y precio_unitario.
> >
> > para ello he creado el desencadenador:
> >
> > CREATE TRIGGER Control_stock_linea ON dbo.T_linies
> > FOR INSERT, UPDATE
> > AS
> >
> > update t_linies set total_bi=(unitats*preu_unitari)
> >
> >
> > pero el problema está en que esto no me modifica solamente el registro
> > actual, sino me modifica todos los registros de la BD y lo que mas


miedo
> me
> > da es que me pueda mezclar los valores de las líneas.
> >
> > muchísimas gracias
> >
> >
> >
>
>


Respuesta Responder a este mensaje
#12 Accotto Maximiliano Damian
11/11/2003 - 23:48 | Informe spam
ACCOTTO MAXIMILIANO DAMIAN
GERENTE DE SISTEMAS
UN SALUDO MUY CORDIAL
"Eladio Rincón" escribió en el mensaje
news:
Hola Accoto,

me gustaría puntualizar un par de cosas:
- cuando se realiza un update, SQL Server no siempre realiza un borrado y
una inserción de un registro para modificar el dato en la página; habrá
ocasiones en que sólo modifique la columna afectada sin realizar
borrado/inserción. Por ejemplo en muchas actualizaciones sencillas SOLO se
modifica las columnas afectadas: con el LogExplorer de Lumigent
(http://www.lumigent.com) puedes ver el proceso (también lo puedes con
select * from ::fn_dblog(null, null).

-desde el punto de vista de un SGBD, no debemos pensar el orden en que se va
a realizar la operación; si actualizo un registro, para mí será transparente
el modo en que el SGBD ha gestionado la modificación ... yo debo saber que
al final tendré el registro modificado con el valor que he especificado.

Espero haber sido de ayuda.

Eladio Rincón
SQL Server MVP
http://eladio.europe.webmatrixhosting.net

"Comparte lo que sabes, aprende lo que no sepas." FGG

"Accotto Maximiliano D." escribió en el
mensaje news:
yes!! un update hace esto:

Primero un delete y luego un insert

por eso la tabla inserted es la tabla con los valores insertados (me
explico?)



Accotto Maximiliano Damian
" Tolo" escribió en el mensaje
news:
> hola,
>
> entiendo que inserted se usa tanto para updates como inserts en la


tabla,
> no?
>
> muchísimas gracias
>
> "Accotto Maximiliano D." escribió


en
el
> mensaje news:
> > deberias hacerlo asi para q no te haga eso: TE PUSE EN MAYUSCULAS LOS
> > CAMBIOS
> >
> > CREATE TRIGGER Control_stock_linea ON dbo.T_linies
> > FOR INSERT, UPDATE
> > AS
> >
> > update dbo.T_linies
> > set INSERTED.total_bi=(INSERTED.unitats*INSERTED.preu_unitari)
> > FROM dbo.T_linies INNER JOIN INSERTED ON
> > (AQUI EL VINCULO ENTRE AMBAS TABLAS, SEGURO Q DEBERAS PONER NRO


FACTURA
Y
> > NUMERO LINEA)
> >
> > Espero q te halla sido util
> >
> > Un abrazo
> >
> >
> > Accotto Maximiliano Damian
> > > hola,
> > >
> > > según he comentado en el msg anterior, tengo una tabla de lineas de
> > facturas
> > > con los campos: unidades, precio_unitario y total y mi intención es
que
> el
> > > desencadenador insert/update me calcule el total a partir de los
valores
> > de
> > > unidades y precio_unitario.
> > >
> > > para ello he creado el desencadenador:
> > >
> > > CREATE TRIGGER Control_stock_linea ON dbo.T_linies
> > > FOR INSERT, UPDATE
> > > AS
> > >
> > > update t_linies set total_bi=(unitats*preu_unitari)
> > >
> > >
> > > pero el problema está en que esto no me modifica solamente el


registro
> > > actual, sino me modifica todos los registros de la BD y lo que mas
miedo
> > me
> > > da es que me pueda mezclar los valores de las líneas.
> > >
> > > muchísimas gracias
> > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#13 Accotto Maximiliano Damian
11/11/2003 - 23:49 | Informe spam
ok!! eso de lumigent.com no lo conocia, lo q yo queria era puntualizar el
uso de las tablas temporales Inserted y Deleted y del porque no habia una
Updated.

Un abrazo

ACCOTTO MAXIMILIANO DAMIAN
GERENTE DE SISTEMAS
UN SALUDO MUY CORDIAL
"Eladio Rincón" escribió en el mensaje
news:
Hola Accoto,

me gustaría puntualizar un par de cosas:
- cuando se realiza un update, SQL Server no siempre realiza un borrado y
una inserción de un registro para modificar el dato en la página; habrá
ocasiones en que sólo modifique la columna afectada sin realizar
borrado/inserción. Por ejemplo en muchas actualizaciones sencillas SOLO se
modifica las columnas afectadas: con el LogExplorer de Lumigent
(http://www.lumigent.com) puedes ver el proceso (también lo puedes con
select * from ::fn_dblog(null, null).

-desde el punto de vista de un SGBD, no debemos pensar el orden en que se va
a realizar la operación; si actualizo un registro, para mí será transparente
el modo en que el SGBD ha gestionado la modificación ... yo debo saber que
al final tendré el registro modificado con el valor que he especificado.

Espero haber sido de ayuda.

Eladio Rincón
SQL Server MVP
http://eladio.europe.webmatrixhosting.net

"Comparte lo que sabes, aprende lo que no sepas." FGG

"Accotto Maximiliano D." escribió en el
mensaje news:
yes!! un update hace esto:

Primero un delete y luego un insert

por eso la tabla inserted es la tabla con los valores insertados (me
explico?)



Accotto Maximiliano Damian
" Tolo" escribió en el mensaje
news:
> hola,
>
> entiendo que inserted se usa tanto para updates como inserts en la


tabla,
> no?
>
> muchísimas gracias
>
> "Accotto Maximiliano D." escribió


en
el
> mensaje news:
> > deberias hacerlo asi para q no te haga eso: TE PUSE EN MAYUSCULAS LOS
> > CAMBIOS
> >
> > CREATE TRIGGER Control_stock_linea ON dbo.T_linies
> > FOR INSERT, UPDATE
> > AS
> >
> > update dbo.T_linies
> > set INSERTED.total_bi=(INSERTED.unitats*INSERTED.preu_unitari)
> > FROM dbo.T_linies INNER JOIN INSERTED ON
> > (AQUI EL VINCULO ENTRE AMBAS TABLAS, SEGURO Q DEBERAS PONER NRO


FACTURA
Y
> > NUMERO LINEA)
> >
> > Espero q te halla sido util
> >
> > Un abrazo
> >
> >
> > Accotto Maximiliano Damian
> > > hola,
> > >
> > > según he comentado en el msg anterior, tengo una tabla de lineas de
> > facturas
> > > con los campos: unidades, precio_unitario y total y mi intención es
que
> el
> > > desencadenador insert/update me calcule el total a partir de los
valores
> > de
> > > unidades y precio_unitario.
> > >
> > > para ello he creado el desencadenador:
> > >
> > > CREATE TRIGGER Control_stock_linea ON dbo.T_linies
> > > FOR INSERT, UPDATE
> > > AS
> > >
> > > update t_linies set total_bi=(unitats*preu_unitari)
> > >
> > >
> > > pero el problema está en que esto no me modifica solamente el


registro
> > > actual, sino me modifica todos los registros de la BD y lo que mas
miedo
> > me
> > > da es que me pueda mezclar los valores de las líneas.
> > >
> > > muchísimas gracias
> > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#14 Eladio Rincón
12/11/2003 - 00:16 | Informe spam
Hola,

no problem, yo había intepretado que te referías a un orden secuencial y tan sólo quería aclararlo ... Al final salimos ganando todos ;-)

Eladio Rincón
SQL Server MVP
http://eladio.europe.webmatrixhosting.net

"Comparte lo que sabes, aprende lo que no sepas." FGG

"Accotto Maximiliano Damian" escribió en el mensaje news:
ok!! eso de lumigent.com no lo conocia, lo q yo queria era puntualizar el
uso de las tablas temporales Inserted y Deleted y del porque no habia una
Updated.

Un abrazo

ACCOTTO MAXIMILIANO DAMIAN
GERENTE DE SISTEMAS
UN SALUDO MUY CORDIAL
"Eladio Rincón" escribió en el mensaje
news:
Hola Accoto,

me gustaría puntualizar un par de cosas:
- cuando se realiza un update, SQL Server no siempre realiza un borrado y
una inserción de un registro para modificar el dato en la página; habrá
ocasiones en que sólo modifique la columna afectada sin realizar
borrado/inserción. Por ejemplo en muchas actualizaciones sencillas SOLO se
modifica las columnas afectadas: con el LogExplorer de Lumigent
(http://www.lumigent.com) puedes ver el proceso (también lo puedes con
select * from ::fn_dblog(null, null).

-desde el punto de vista de un SGBD, no debemos pensar el orden en que se va
a realizar la operación; si actualizo un registro, para mí será transparente
el modo en que el SGBD ha gestionado la modificación ... yo debo saber que
al final tendré el registro modificado con el valor que he especificado.

Espero haber sido de ayuda.

Eladio Rincón
SQL Server MVP
http://eladio.europe.webmatrixhosting.net

"Comparte lo que sabes, aprende lo que no sepas." FGG

"Accotto Maximiliano D." escribió en el
mensaje news:
> yes!! un update hace esto:
>
> Primero un delete y luego un insert
>
> por eso la tabla inserted es la tabla con los valores insertados (me
> explico?)
>
>
>
> Accotto Maximiliano Damian
> " Tolo" escribió en el mensaje
> news:
> > hola,
> >
> > entiendo que inserted se usa tanto para updates como inserts en la
tabla,
> > no?
> >
> > muchísimas gracias
> >
> > "Accotto Maximiliano D." escribió
en
> el
> > mensaje news:
> > > deberias hacerlo asi para q no te haga eso: TE PUSE EN MAYUSCULAS LOS
> > > CAMBIOS
> > >
> > > CREATE TRIGGER Control_stock_linea ON dbo.T_linies
> > > FOR INSERT, UPDATE
> > > AS
> > >
> > > update dbo.T_linies
> > > set INSERTED.total_bi=(INSERTED.unitats*INSERTED.preu_unitari)
> > > FROM dbo.T_linies INNER JOIN INSERTED ON
> > > (AQUI EL VINCULO ENTRE AMBAS TABLAS, SEGURO Q DEBERAS PONER NRO
FACTURA
> Y
> > > NUMERO LINEA)
> > >
> > > Espero q te halla sido util
> > >
> > > Un abrazo
> > >
> > >
> > > Accotto Maximiliano Damian
> > > > hola,
> > > >
> > > > según he comentado en el msg anterior, tengo una tabla de lineas de
> > > facturas
> > > > con los campos: unidades, precio_unitario y total y mi intención es
> que
> > el
> > > > desencadenador insert/update me calcule el total a partir de los
> valores
> > > de
> > > > unidades y precio_unitario.
> > > >
> > > > para ello he creado el desencadenador:
> > > >
> > > > CREATE TRIGGER Control_stock_linea ON dbo.T_linies
> > > > FOR INSERT, UPDATE
> > > > AS
> > > >
> > > > update t_linies set total_bi=(unitats*preu_unitari)
> > > >
> > > >
> > > > pero el problema está en que esto no me modifica solamente el
registro
> > > > actual, sino me modifica todos los registros de la BD y lo que mas
> miedo
> > > me
> > > > da es que me pueda mezclar los valores de las líneas.
> > > >
> > > > muchísimas gracias
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#15 Accotto Maximiliano Damian
12/11/2003 - 00:34 | Informe spam
mas bien!! aca estamos todos para aprender no?


ACCOTTO MAXIMILIANO DAMIAN
GERENTE DE SISTEMAS
UN SALUDO MUY CORDIAL
"Eladio Rincón" escribió en el mensaje
news:
Hola,

no problem, yo había intepretado que te referías a un orden secuencial y tan
sólo quería aclararlo ... Al final salimos ganando todos ;-)

Eladio Rincón
SQL Server MVP
http://eladio.europe.webmatrixhosting.net

"Comparte lo que sabes, aprende lo que no sepas." FGG

"Accotto Maximiliano Damian" escribió
en el mensaje news:
ok!! eso de lumigent.com no lo conocia, lo q yo queria era puntualizar el
uso de las tablas temporales Inserted y Deleted y del porque no habia una
Updated.

Un abrazo

ACCOTTO MAXIMILIANO DAMIAN
GERENTE DE SISTEMAS
UN SALUDO MUY CORDIAL
"Eladio Rincón" escribió en el mensaje
news:
Hola Accoto,

me gustaría puntualizar un par de cosas:
- cuando se realiza un update, SQL Server no siempre realiza un borrado y
una inserción de un registro para modificar el dato en la página; habrá
ocasiones en que sólo modifique la columna afectada sin realizar
borrado/inserción. Por ejemplo en muchas actualizaciones sencillas SOLO se
modifica las columnas afectadas: con el LogExplorer de Lumigent
(http://www.lumigent.com) puedes ver el proceso (también lo puedes con
select * from ::fn_dblog(null, null).

-desde el punto de vista de un SGBD, no debemos pensar el orden en que se


va
a realizar la operación; si actualizo un registro, para mí será


transparente
el modo en que el SGBD ha gestionado la modificación ... yo debo saber que
al final tendré el registro modificado con el valor que he especificado.

Espero haber sido de ayuda.

Eladio Rincón
SQL Server MVP
http://eladio.europe.webmatrixhosting.net

"Comparte lo que sabes, aprende lo que no sepas." FGG

"Accotto Maximiliano D." escribió en


el
mensaje news:
> yes!! un update hace esto:
>
> Primero un delete y luego un insert
>
> por eso la tabla inserted es la tabla con los valores insertados (me
> explico?)
>
>
>
> Accotto Maximiliano Damian
> " Tolo" escribió en el mensaje
> news:
> > hola,
> >
> > entiendo que inserted se usa tanto para updates como inserts en la
tabla,
> > no?
> >
> > muchísimas gracias
> >
> > "Accotto Maximiliano D." escribió
en
> el
> > mensaje news:
> > > deberias hacerlo asi para q no te haga eso: TE PUSE EN MAYUSCULAS


LOS
> > > CAMBIOS
> > >
> > > CREATE TRIGGER Control_stock_linea ON dbo.T_linies
> > > FOR INSERT, UPDATE
> > > AS
> > >
> > > update dbo.T_linies
> > > set INSERTED.total_bi=(INSERTED.unitats*INSERTED.preu_unitari)
> > > FROM dbo.T_linies INNER JOIN INSERTED ON
> > > (AQUI EL VINCULO ENTRE AMBAS TABLAS, SEGURO Q DEBERAS PONER NRO
FACTURA
> Y
> > > NUMERO LINEA)
> > >
> > > Espero q te halla sido util
> > >
> > > Un abrazo
> > >
> > >
> > > Accotto Maximiliano Damian
> > > > hola,
> > > >
> > > > según he comentado en el msg anterior, tengo una tabla de lineas


de
> > > facturas
> > > > con los campos: unidades, precio_unitario y total y mi intención


es
> que
> > el
> > > > desencadenador insert/update me calcule el total a partir de los
> valores
> > > de
> > > > unidades y precio_unitario.
> > > >
> > > > para ello he creado el desencadenador:
> > > >
> > > > CREATE TRIGGER Control_stock_linea ON dbo.T_linies
> > > > FOR INSERT, UPDATE
> > > > AS
> > > >
> > > > update t_linies set total_bi=(unitats*preu_unitari)
> > > >
> > > >
> > > > pero el problema está en que esto no me modifica solamente el
registro
> > > > actual, sino me modifica todos los registros de la BD y lo que mas
> miedo
> > > me
> > > > da es que me pueda mezclar los valores de las líneas.
> > > >
> > > > muchísimas gracias
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida