Consulta trigger/dato de tempdb

25/06/2009 - 21:16 por CHAR72 | Informe spam
Hola! tengo un pequeño problema que no se donde esta mal y no puedo
resolverlo, por lo que acudo a los gurus del foro.

Escenario:

App. que se conecta a un SQL2000, a taves de una unica conexión permanente,
luego dela conexion la app. crea una tabla temporal y pone un dato en ella

CREATE TABLE #Variables (ID smallint)"
INSERT INTO #Variables (ID) VALUES (xx)

luego, en una tabla, tengo un triger asi:

CREATE TRIGGER TABLA_Audit_Insert ON TABLA
INSTEAD OF INSERT
AS
DECLARE @ID smallint
EXEC sp_Get_ID @ID OUTPUT

SELECT * INTO #tmp FROM inserted
UPDATE #tmp SET Insert_Date=GetDate(), Insert_ID=@ID
INSERT INTO TABLA SELECT * FROM #tmp

y en ese triger usa un sp:

CREATE PROCEDURE sp_Get_ID @ID smallint OUTPUT AS

IF Object_id('tempdb.dbo.#Variables') IS NULL
SELECT @ID=0
ELSE
SELECT @ID=ID FROM #Variables

-
Problema: cuando se agregan datos, en algunos registros me figura ID=0 (que
seria cuando no detecta la tabla temporal) y en otro el ID es el correcto.


Pregunta: porque algunas veces "obtiene" el ID y en otros no?


Saludos y muchas gracias por vuestros aportes.

Atte. Carlos
 

Leer las respuestas

#1 Alejandro Mesa
25/06/2009 - 22:16 | Informe spam
CHAR72,

Si por algun motivo se desconecta la aplicacion, posiblemente no se este
recreando la tabla temporal.

Otra cosa, como sabes que esos registros se insertaron desde la aplicacion y
no desde otra.

AMB

"CHAR72" wrote:

Hola! tengo un pequeño problema que no se donde esta mal y no puedo
resolverlo, por lo que acudo a los gurus del foro.

Escenario:

App. que se conecta a un SQL2000, a taves de una unica conexión permanente,
luego dela conexion la app. crea una tabla temporal y pone un dato en ella

CREATE TABLE #Variables (ID smallint)"
INSERT INTO #Variables (ID) VALUES (xx)

luego, en una tabla, tengo un triger asi:

CREATE TRIGGER TABLA_Audit_Insert ON TABLA
INSTEAD OF INSERT
AS
DECLARE @ID smallint
EXEC sp_Get_ID @ID OUTPUT

SELECT * INTO #tmp FROM inserted
UPDATE #tmp SET Insert_Date=GetDate(), Insert_ID=@ID
INSERT INTO TABLA SELECT * FROM #tmp

y en ese triger usa un sp:

CREATE PROCEDURE sp_Get_ID @ID smallint OUTPUT AS

IF Object_id('tempdb.dbo.#Variables') IS NULL
SELECT @ID=0
ELSE
SELECT @ID=ID FROM #Variables

-
Problema: cuando se agregan datos, en algunos registros me figura ID=0 (que
seria cuando no detecta la tabla temporal) y en otro el ID es el correcto.


Pregunta: porque algunas veces "obtiene" el ID y en otros no?


Saludos y muchas gracias por vuestros aportes.

Atte. Carlos



Preguntas similares