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

Preguntas similare

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



Respuesta Responder a este mensaje
#2 CHAR72
29/06/2009 - 22:27 | Informe spam
Alejandro: respondiendo a tus preguntas, si se desconecta la aplicación da
error y no continua, y respecto al otro punto, estoy viendo ese tema, pero
es casi seguro que aun agregando datos desde la aplicación no detecte la
tabla temporal, me falta demostrar ese punto. Supongo que de lo que esta
hecho, no hay ninguna otra observación y es correcto.

Saludos y gracias

Carlos

"Alejandro Mesa" escribió en el
mensaje news:
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



Respuesta Responder a este mensaje
#3 Luis Martinez
06/07/2009 - 21:23 | Informe spam
Hola,

Te recomiendo que verifiques desde la App. la existencia de la tabla
#Variables así tendrás mas garantía que el proceso se complete con éxito.
Por que la comprobación que haces en el trigger me parece que ya es muy
tarde por que la data se te embasura...

Saludos

"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje de noticias
news:%
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


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida