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