Trigger instead of insert...

02/04/2004 - 02:23 por luis_mtz | Informe spam
Saludos

Tengo el siguiente trigger...

CREATE TRIGGER trg_insert_movimiento ON movimiento INSTEAD
OF INSERT as
BEGIN
insert into movimiento (mov_fol,con_cla,con_des)
SELECT COALESCE((SELECT MAX(mov_fol) FROM
movimiento) +1, 1),con_cla,con_des FROM inserted
END

Bien esta es la estructura, se encuentran muchos mas
campos, solo que los omito para no hacerlo tan extenso, el
problema es que me envia error que mov_fol no puede ser
NULL. El insert se realiza desde un procedimiento
almacenado..

ALTER PROC dbo.pduinsertmovimiento
@concla int,
@condes varchar(50),
@lnid int OUTPUT AS
INSERT INTO dbo.movimiento
(con_cla, con_des)
VALUES (@concla, @condes)
SET @lnid=SCOPE_IDENTITY()


bien segun yo el trigger por ser instead la insercion real
se realiza en este, y aqui es donde se asigna valor al
campo mov_fol, alguien ve que estoy haciendo mal?

muchas gracias.

luis_mtz
 

Leer las respuestas

#1 Maximiliano Damian Accotto
02/04/2004 - 03:28 | Informe spam
hola, lo que yo haria es poner un isnull en el Max y ponerle 0 o sea si ese
MAx da nulo entonces pone un 0 o lo que fuere

insert into movimiento (mov_fol,con_cla,con_des)
SELECT (SELECT isnull(MAX(mov_fol),0) + 1 FROM
movimiento) ,con_cla,con_des FROM inserted

proba asi a ver que pacha y me decis :D

Bye



Salu2

Maximiliano Damian Accotto
Gerente de IT
Fundicion San Cayetano S.A.
Buenos Aires Argentina
-
maxi_accotto[arroba]speedy[.]com[.].ar
MSN:



"luis_mtz" escribió en el mensaje
news:176d601c41848$ab6918c0$

Saludos

Tengo el siguiente trigger...

CREATE TRIGGER trg_insert_movimiento ON movimiento INSTEAD
OF INSERT as
BEGIN
insert into movimiento (mov_fol,con_cla,con_des)
SELECT COALESCE((SELECT MAX(mov_fol) FROM
movimiento) +1, 1),con_cla,con_des FROM inserted
END

Bien esta es la estructura, se encuentran muchos mas
campos, solo que los omito para no hacerlo tan extenso, el
problema es que me envia error que mov_fol no puede ser
NULL. El insert se realiza desde un procedimiento
almacenado..

ALTER PROC dbo.pduinsertmovimiento
@concla int,
@condes varchar(50),
@lnid int OUTPUT AS
INSERT INTO dbo.movimiento
(con_cla, con_des)
VALUES (@concla, @condes)
SET @lnid=SCOPE_IDENTITY()


bien segun yo el trigger por ser instead la insercion real
se realiza en este, y aqui es donde se asigna valor al
campo mov_fol, alguien ve que estoy haciendo mal?

muchas gracias.

luis_mtz

Preguntas similares