none
Disparadores RRS feed

  • Pregunta

  • Hola... Quisiera saber si alguien podría ayudarme con esto... Tengo que eliminar un registro de una tabla controlando que no este vinculado con otra tabla mediante un Disparador... Como seria el código?

    Desde ya gracias....

    martes, 26 de febrero de 2019 7:01

Respuestas

  • Lo primero antes de empezar es decir que para esto no se debería usar un disparador sino un Foreign Key.

    Dicho eso, si realmente quieres usar un disparador, sería más o menos así:

    create trigger trgNombre after delete on latabla as
    begin
         if exists (select * from laotratabla join deleted on laotratabla.campo=deleted.campo)
            rollback
    end
    Es decir, en resumidas cuentas hacemos un join de la tabla "deleted", que trae todos los registros que has borrado (podrían ser más de uno) contra la tabla en la que queremos que no exista el vínculo. Si existe algún resultado quiere decir que sí que había vínculo. En ese caso hacemos un rollback de la transacción, lo cuál "desborra" los registros borrados.


    martes, 26 de febrero de 2019 7:28

Todas las respuestas

  • Lo primero antes de empezar es decir que para esto no se debería usar un disparador sino un Foreign Key.

    Dicho eso, si realmente quieres usar un disparador, sería más o menos así:

    create trigger trgNombre after delete on latabla as
    begin
         if exists (select * from laotratabla join deleted on laotratabla.campo=deleted.campo)
            rollback
    end
    Es decir, en resumidas cuentas hacemos un join de la tabla "deleted", que trae todos los registros que has borrado (podrían ser más de uno) contra la tabla en la que queremos que no exista el vínculo. Si existe algún resultado quiere decir que sí que había vínculo. En ese caso hacemos un rollback de la transacción, lo cuál "desborra" los registros borrados.


    martes, 26 de febrero de 2019 7:28
  • Buenísimo! Me sirvió Gracias!
    miércoles, 22 de mayo de 2019 5:44