A manipulação de objetos de banco de dados é uma tarefa essencial para qualquer DBA ou desenvolvedor. No caso do Oracle, uma das ações comuns que podem ocorrer é a exclusão de colunas de tabelas existentes, usando a instrução “DROP COLUMN”. No entanto, identificar quando uma coluna é excluída pode ser crucial para garantir a integridade dos dados e a consistência do esquema do banco de dados.
Neste artigo, vamos explorar como criar um trigger de DDL no Oracle, especificamente na versão 11g, para identificar quando uma coluna é excluída de uma tabela. Além disso, utilizaremos a linguagem PL/SQL para implementar essa solução.
Antes de prosseguirmos, é importante entender o que é um trigger de DDL. Um trigger de DDL é um objeto de banco de dados que é acionado automaticamente em resposta a eventos de definição de dados (Data Definition Language – DDL). Esses eventos podem incluir criação, alteração ou exclusão de objetos, como tabelas, colunas, índices, entre outros.
Vamos começar criando a tabela de log que será usada para armazenar as informações sobre as colunas excluídas. Suponha que temos a seguinte estrutura para essa tabela:
sql
Copy code
CREATE TABLE log_exclusao_coluna (
nome_tabela VARCHAR2(100),
nome_coluna VARCHAR2(100),
data_exclusao DATE
);
Agora, vamos criar o trigger que será disparado sempre que uma coluna for excluída de uma tabela. Este trigger será responsável por inserir um registro na tabela log_exclusao_coluna com as informações relevantes.
sql
Copy code
CREATE OR REPLACE TRIGGER trg_exclusao_coluna
AFTER DROP
ON SCHEMA
DECLARE
v_nome_tabela VARCHAR2(100);
v_nome_coluna VARCHAR2(100);
BEGIN
— Obter o nome da tabela e da coluna excluída
v_nome_tabela := ora_dict_obj_name;
v_nome_coluna := ora_dict_obj_name;
— Inserir registro na tabela de log
INSERT INTO log_exclusao_coluna (nome_tabela, nome_coluna, data_exclusao)
VALUES (v_nome_tabela, v_nome_coluna, SYSDATE);
END;
/
Agora que o trigger foi criado, sempre que uma coluna for excluída em qualquer tabela do esquema, um registro será inserido na tabela log_exclusao_coluna com o nome da tabela, o nome da coluna e a data da exclusão.
É importante ressaltar que, para que o trigger funcione corretamente, ele deve ser criado com privilégios de administrador do banco de dados. Além disso, deve-se levar em consideração que o trigger será disparado para qualquer coluna excluída em qualquer tabela do esquema em que ele foi criado.
Para testar o trigger, você pode executar uma instrução DROP COLUMN em uma tabela existente. Por exemplo:
sql
Copy code
ALTER TABLE minha_tabela DROP COLUMN minha_coluna;
Após a execução dessa instrução, um registro será inserido na tabela log_exclusao_coluna com as informações correspondentes.
Em resumo, neste artigo exploramos como criar um trigger de DDL no Oracle 11g para identificar quando uma coluna é excluída de uma tabela. Util