Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2008
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Desactivar trigger

Hola amigos del foro mi pregunta es la siguiente como puedo desde delphi desactivar un trigger. Utilizo delphi 7 y firebird 2.0
Responder Con Cita
  #2  
Antiguo 22-07-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
supongo que será algo como esto:

alter triger disable
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 22-07-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, para agregarle algo a lo dicho por poliburro, para inactivarlo un trigger la cosa es exactamente así:

Código SQL [-]
 
alter trigger Nombre_del_trigger inactive
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #4  
Antiguo 19-07-2011
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Desactivar trigger

Muchas gracias.
Ahora tengo una inquietud que se suma al tema, yo necesito correr un script que va a correr nuevos datos, pero me está generando problemas con los trigger before insert y generadores, el problema es que son muchas tablas para yo ir desactivando trigger por trigger para poder hacer la insercción correctamente, hay una forma desde delphi de desactivar todos los triggers "before insert" de todas las tablas a la vez.
Responder Con Cita
  #5  
Antiguo 19-07-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Abajo de esta página tienes varios enlaces con ese mismo tema.
Responder Con Cita
  #6  
Antiguo 07-08-2011
cdac901 cdac901 is offline
Miembro
 
Registrado: feb 2008
Posts: 12
Poder: 0
cdac901 Va por buen camino
Desactivar trigger

Hola con respecto a los generator te recomiendo hacer un store procedure consultando el MAX del campo que afecta dicho generator y luego actualizarlo con el resultado que genero la consulta mas 1

con respecto al desativar los trigger seria algo asi, lo probe y funciono:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, IBDatabase, IBCustomDataSet;

type
  TForm1 = class(TForm)
    IBDataSet1: TIBDataSet;
    IBDataSet2: TIBDataSet;
    IBTransaction1: TIBTransaction;
    IBDatabase1: TIBDatabase;
    btActivar: TButton;
    IBTransaction2: TIBTransaction;
    btDesactivar: TButton;
    procedure btActivarClick(Sender: TObject);
    procedure btDesactivarClick(Sender: TObject);
  private
    { Private declarations }
    procedure ProcesarTrigger( lActivar: Boolean );
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.ProcesarTrigger( lActivar: Boolean );
var
   cActivar: string;
begin
   if lActivar then
      cActivar := ' ''ACTIVE ;'' '
   else
      cActivar := ' ''INACTIVE ; '' ';

   IBDataSet1.Close;
   IBDataSet1.SelectSQL.Text := 'SELECT ''ALTER TRIGGER '' || A.RDB$TRIGGER_NAME ||' + cActivar +
                                '  FROM RDB$TRIGGERS A ' +
                                ' WHERE (A.RDB$SYSTEM_FLAG = 0) ' +
                                '   AND (A.RDB$TRIGGER_INACTIVE = 0) ' +
                                '   AND (A.RDB$TRIGGER_TYPE IN (1, 17, 113, 25)) ';
   IBDataSet1.Open;

   if IBDataSet1.RecordCount > 0 then
      while not IBDataSet1.Eof do
         try
            IBDataSet2.Close;
            IBDataSet2.SelectSQL.Text := IBDataSet1.Fields[0].AsString;
            IBDataSet2.Prepare;
            IBDataSet2.ExecSQL;
            IBTransaction2.Commit;
         except
            on e: Exception do
               begin
                  ShowMessage(e.Message);

                  if IBTransaction2.Active then
                     IBTransaction2.Rollback;
               end;
         end;

   IBTransaction1.Commit;
end;

procedure TForm1.btActivarClick(Sender: TObject);
begin
   ProcesarTrigger( True );
end;

procedure TForm1.btDesactivarClick(Sender: TObject);
begin
   ProcesarTrigger( False );
end;

end.


Espero te sirva.
Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Un trigger que dispara un procedimiento que dispara un trigger... sitrico Firebird e Interbase 5 04-06-2007 22:05:13
desactivar usb anubis Varios 2 22-04-2007 03:57:09
Desactivar MSN jorodgar Varios 6 19-05-2005 14:21:13
Desactivar trigger desde procedimiento almacenado oliverinf Firebird e Interbase 5 09-10-2004 16:17:45
desactivar Alt+TAB en xp M@rcos API de Windows 2 15-07-2003 17:00:24


La franja horaria es GMT +2. Ahora son las 13:35:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi