Actualización en un trigger

22/07/2004 - 22:23 por Gregorio López Rojo | Informe spam
Hola a todos. Estoy intentando diseñar un trigger para actualizar un campo
dependiendo del valor de otro campo relacionado con otra tabla. Sería algo
como lo siguiente:

create trigger trigger_InsertTabla1 on Tabla1
for insert
as
set nocount on

declare @campo bit
set @campo = (select campo from Tabla2 where llave = inserted.llave)
if @campo = 1
update inserted
set otrocampo = 0
else
update inserted
set otrocampo = 1

Pero como es sabido la tabla inserted no puede ser actualizada, ¿como sería
entonces el trigger con esta consideracion? ¿O no puede hacerse esto?

Saludos y gracias anticipadas.

Preguntas similare

Leer las respuestas

#1 Isaías
22/07/2004 - 23:08 | Informe spam
¿Porque no deja es "campo", en forma CALCULADA?
Respuesta Responder a este mensaje
#2 Gregorio López Rojo
22/07/2004 - 23:35 | Informe spam
Porque el valor a establecerse depende de otro campo de la tabla en cuestión
y de otra tabla.

Saludos.

"Isaías" wrote in message
news:261601c47030$18635280$
¿Porque no deja es "campo", en forma CALCULADA?
Respuesta Responder a este mensaje
#3 Javier Loria
22/07/2004 - 23:59 | Informe spam
Hola:
Si es solo para INSERT lo mas probable es que puedas hacerlo con un
DEFAULT sin usar el trigger. Cuando creas la Tabla puedes agregar un valor
que dependa de otra columna (no de otras filas o tablas).
=CREATE TABLE Tabla(
.
, OtroCampo INT NOT NULL
DEFAULT(CASE Campo WHEN 0 THEN 1
ELSE 0 END)
,
)
= Si es en Update y lo quieres hacer en el Trigger, puedes hacer algo
como:
=
UPDATE Tabla1
SET OtroCampoÊSE I.Campo WHEN 0 THEN 1
ELSE 0 END)
FROM Tabla1
JOIN Inserted
ON Tabla1.PK=Inserted.PK
...
= Espero te sirva,


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.
Gregorio López Rojo escribio:
Hola a todos. Estoy intentando diseñar un trigger para actualizar un
campo dependiendo del valor de otro campo relacionado con otra tabla.
Sería algo como lo siguiente:

create trigger trigger_InsertTabla1 on Tabla1
for insert
as
set nocount on

declare @campo bit
set @campo = (select campo from Tabla2 where llave > inserted.llave) if @campo = 1
update inserted
set otrocampo = 0
else
update inserted
set otrocampo = 1

Pero como es sabido la tabla inserted no puede ser actualizada, ¿como
sería entonces el trigger con esta consideracion? ¿O no puede hacerse
esto?

Saludos y gracias anticipadas.
Respuesta Responder a este mensaje
#4 Gregorio López Rojo
23/07/2004 - 00:19 | Informe spam
No puedo usar defaults porque se depende de otra tabla :(

Saludos y gracias.

"Javier Loria" wrote in message
news:
Hola:
Si es solo para INSERT lo mas probable es que puedas hacerlo con un
DEFAULT sin usar el trigger. Cuando creas la Tabla puedes agregar un valor
que dependa de otra columna (no de otras filas o tablas).
=> CREATE TABLE Tabla(
.
, OtroCampo INT NOT NULL
DEFAULT(CASE Campo WHEN 0 THEN 1
ELSE 0 END)
,
)
=> Si es en Update y lo quieres hacer en el Trigger, puedes hacer algo
como:
=>
UPDATE Tabla1
SET OtroCampoÊSE I.Campo WHEN 0 THEN 1
ELSE 0 END)
FROM Tabla1
JOIN Inserted
ON Tabla1.PK=Inserted.PK
...
=> Espero te sirva,


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.
Gregorio López Rojo escribio:
> Hola a todos. Estoy intentando diseñar un trigger para actualizar un
> campo dependiendo del valor de otro campo relacionado con otra tabla.
> Sería algo como lo siguiente:
>
> create trigger trigger_InsertTabla1 on Tabla1
> for insert
> as
> set nocount on
>
> declare @campo bit
> set @campo = (select campo from Tabla2 where llave > > inserted.llave) if @campo = 1
> update inserted
> set otrocampo = 0
> else
> update inserted
> set otrocampo = 1
>
> Pero como es sabido la tabla inserted no puede ser actualizada, ¿como
> sería entonces el trigger con esta consideracion? ¿O no puede hacerse
> esto?
>
> Saludos y gracias anticipadas.


Respuesta Responder a este mensaje
#5 Gregorio López Rojo
23/07/2004 - 00:21 | Informe spam
La segunda alternativa parece ser la más viable.

Saludos y gracias.

"Javier Loria" wrote in message
news:
Hola:
Si es solo para INSERT lo mas probable es que puedas hacerlo con un
DEFAULT sin usar el trigger. Cuando creas la Tabla puedes agregar un valor
que dependa de otra columna (no de otras filas o tablas).
=> CREATE TABLE Tabla(
.
, OtroCampo INT NOT NULL
DEFAULT(CASE Campo WHEN 0 THEN 1
ELSE 0 END)
,
)
=> Si es en Update y lo quieres hacer en el Trigger, puedes hacer algo
como:
=>
UPDATE Tabla1
SET OtroCampoÊSE I.Campo WHEN 0 THEN 1
ELSE 0 END)
FROM Tabla1
JOIN Inserted
ON Tabla1.PK=Inserted.PK
...
=> Espero te sirva,


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.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida