![]() |
sqlcode
hola que tal, estoy trabajando con Delphi 7 y Firebird 1.5..
bueno tengo el siguiente detalle.. tengo un trigger que quiero que me verifica si la llave esta duplicada si lo esta que me arroje un mensaje.. Código:
CREATE TRIGGER "tgrVerDatArea" FOR TBLCATARE ACTIVE que estoy haciendo mal?.. |
Pues
Los trigger no regresan nada esa es la diferencia a un Stored Procedure, osease que lo que quieres hacer lo vas a hacer con un Stored Procedure
|
El trigger before insert no puede "cachar" un error que no se ha producido cuando se invoca (el SQL code ocurrirá un instante después, cuando se intente aplicar el registro a la bd). El trigger after tampoco servirá, pues dado que el error ya ocurrió, nunca llega a dispararse.
En general, no podes capturar en el trigger un error que se generará por la inserción del registro en la bd. Podrias hacer un select sobre la misma tabla verificando si ya existe un valor con la misma clave para elevar tu propia excepción, pero esto solo añadirá carga al servidor, a mi juicio, innecesaria. ¿Por que no capturas el error desde donde está intentando insertarse el registro? Saludos. |
trigger sqlcode
hola que tal he leido las respuestas que me mandan..
tengo el siguiente trigger: Código:
CREATE TRIGGER "tgrVerDatArea" FOR TBLCATARE ACTIVE pero entonces para que esta el sqlcode? :confused: ... en que casos de usa o como:confused: se usa.. saludos y gracias por responder... |
Te serviría en un caso como:
Hasta luego. ;) |
sqlcode trigger
Ok..
Gracias jachguate, sanxpue son muy amables.. saludos y que esten bien..;) |
Al final pudiste mostrar el mensaje de excepcion?, como lo hiciste, probe de la forma que dice en el ejemplo y funciona de todo menos la linea:
Código:
begin |
Buenas a to er mundo.
a) un trigger before, la palabrita "before", lo dice claramente en englies pitinglis, antes de..., por lo que es imposible que devuelva una excepción por duplicidad de clave, ya que aun no se ha producido la actualización del registro en la tabla. b) con el after, sucede lo mismo. Se ejecuta despues de actualizar el registro en la tabla. Posibles controles a realizar: a) En el trigger, realizar una búsqueda del registro y generar la excepción si se duplica. b) Que sea la BD quien controle la duplicidad y controlar el error en la aplicación. Personalmente me decanto por el segundo caso "b)". :cool: |
La franja horaria es GMT +2. Ahora son las 11:57:45. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi