Este é o local onde o desenvolvedor ativa o log automático do WI para atualizações feitas nos banco de dados.
O campo Banco de Dados serve para que o desenvolvedor indique qual será o banco de dados utilizado para armazenar o log.
O campo Tabela serve para que o desenvolvedor indique qual a tabela será utilizada para os logs.
A tabela deverá ter no mínimo 8 campos seguindo a ordem e nomeação abaixo:
- id = Id do registro (autoincrement)
- logdate = Data e hora
- databaseid = Banco de dados
- transactionid = Transacao
- sqlstatus = Status (T/F)
- sqlcommand = SQL
- sqlerror = Mensagem de Erro do BD (sqlerrormsg se for Caché)
- sqlparams = Parâmetros do SQL entre colchetes
Além das colunas obrigatórias o desenvolvedor pode definir outras colunas de texto e definir o valor a ser armazenado pela interface do builder. As colunas adicionais devem ser do tipo texto longo (Text ou CBLOB mas alguns BDs aceitam varchar) e não podem ser NOT NULL.
O campo Valor serve para que o desenvolvedor indique o valor a ser armazenado nas colunas específicas da aplicação.
Segue um exemplo do comando DDL para criar a tabela de logs no Mysql:
CREATE TABLE mylog (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
logdate DATETIME NOT NULL,
databaseid VARCHAR(20) NOT NULL,
transactionid VARCHAR(20) NOT NULL,
sqlstatus CHAR(1) NOT NULL,
sqlcommand TEXT NOT NULL,
sqlerror TEXT NOT NULL,
sqlparams TEXT NOT NULL,
PRIMARY KEY (id)
)
Segue um exemplo do comando DDL para criar a tabela de logs no Postgres:
CREATE TABLE mylog (
id serial NOT NULL,
logdate timestamp NOT NULL,
databaseid VARCHAR(20) NOT NULL,
transactionid VARCHAR(20) NOT NULL,
sqlstatus CHAR(1) NOT NULL,
sqlcommand TEXT NOT NULL,
sqlerror TEXT NOT NULL,
sqlparams TEXT NOT NULL,
PRIMARY KEY (id)
)
Segue um exemplo do comando DDL para criar a classe de logs no Caché:
Class User.MyLog Extends %Persistent [ ClassType = persistent, ProcedureBlock, SqlRowIdName = id ]
{
Segue um exemplo do comando DDL para criar a classe de logs no Oracle:
CREATE TABLE mylog (
id INTEGER NOT NULL,
logdate TIMESTAMP NOT NULL,
databaseid VARCHAR2(20) NOT NULL,
transactionid VARCHAR2(20) NOT NULL,
sqlstatus CHAR(1) NOT NULL,
sqlcommand CLOB NOT NULL,
sqlerror CLOB NOT NULL,
sqlparams CLOB NOT NULL,
CONSTRAINT pk_mylog PRIMARY KEY (id)
);
CREATE SEQUENCE mylog_seq
INCREMENT BY 1
START WITH 1
MAXVALUE 999999999
MINVALUE 1
nocycle
nocache
noorder;
CREATE TRIGGER mylog_insert BEFORE INSERT ON mylog
FOR EACH ROW BEGIN
select mylog_seq.nextval into :new.id from dual;
END;