Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Una funcion que no acaba de ir bien

Estas en el tema de Una funcion que no acaba de ir bien en el foro de Bases de Datos General en Foros del Web. Buenas a todos, Como no sigo con los triggers y me estoy haciendo daño con uno, en concreto es este: CREATE TRIGGER decrementr ON dbo.Nodos ...
  #1 (permalink)  
Antiguo 30/08/2005, 07:56
 
Fecha de Ingreso: diciembre-2003
Mensajes: 288
Antigüedad: 20 años, 11 meses
Puntos: 0
Una funcion que no acaba de ir bien

Buenas a todos,

Como no sigo con los triggers y me estoy haciendo daño con uno, en concreto es este:

CREATE TRIGGER decrementr ON dbo.Nodos
AFTER DELETE
AS
begin
Declare @id int
Declare @max int
Declare @eliminar int
Declare @idnodo
select @id= IdEC from deleted
select @idnodo= from deleted
select @max=dbo.inc_max(@id)
select @eliminar=dbo.nodo(@idnodo)
if @max<>@eliminar
update Nodos SET NodoEC=@eliminar FROM Nodos WHERE(NodoEC=@max AND IdEC=@id)

Ahora os comento:
dbo.inc_max(@id), es una funcion q devuelve el valor maximo del campo NodoEC donde coincide con la IdEC a eliminar.(funciona)

dbo.nodo(@idnodo) lo que hace es devolver el valor del campo NodoEC de la fila que vamos a elimiar.(funciona)

Entonces si tenemos una EC(por ejemplo la 2) que tiene como idNodo 1,2,3 y estos los valores 4,5,6 (que es el nodoEC) y quiero eliminar por ejemplo el 5,como este es diferente del maximo(ya que 6<>5), entonces quiero que el idNodo 3 coja el valor del idnodo2(o sea el 5) y el idnodo2 se borre,y si el valor es el igual al maximo pues que lo borre simplemente.

1->4
2->5
3->6

Y quedaria:
1->4
3->5

Pues bien el trigger no me da error, pero solo me lo hace bien si el valor es igual al maximo, parace como si el 'if' no tuviese efecto o que el update este mal, alguna idea?¿

GRACIAS
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:15.