Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Desactivar trigger (https://www.clubdelphi.com/foros/showthread.php?t=58498)

Vlady 22-07-2008 16:55:16

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

poliburro 22-07-2008 17:03:35

supongo que será algo como esto:

alter triger disable

jhonny 22-07-2008 18:23:18

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

Vlady 19-07-2011 00:08:55

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.

Casimiro Notevi 19-07-2011 00:33:35

Abajo de esta página tienes varios enlaces con ese mismo tema.

cdac901 07-08-2011 22:29:00

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.


La franja horaria es GMT +2. Ahora son las 09:32:57.

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