Remoção de CONSTRAINT no Firebird
Dica publicada em Banco de Dados / Introdução
Remoção de CONSTRAINT no Firebird
Para remover constraints de forma rápida.
Exemplos:
01. Digamos que exista uma tabela T com uma chave estrangeira X:
02. Para a mesma tabela T com um check em um campo J:
Perceba que se existirem n CONSTRAINTS do tipo que está sendo passado, todas elas serão removidas:
Exemplos:
01. Digamos que exista uma tabela T com uma chave estrangeira X:
REMOVER_CONSTRAINT(T, 'FOREIGN KEY');
02. Para a mesma tabela T com um check em um campo J:
REMOVER_CONSTRAINT(T, 'CHECK);
Perceba que se existirem n CONSTRAINTS do tipo que está sendo passado, todas elas serão removidas:
create procedure REMOVER_CONSTRAINT (
TABELA varchar(50),
TIPO_CONSTRAINT varchar(50))
as
declare variable SQL varchar(100);
begin
SELECT
'ALTER TABLE ' || TRIM(RC.RDB$RELATION_NAME) ||
' DROP CONSTRAINT ' || TRIM(RC.RDB$CONSTRAINT_NAME) || ';'
FROM RDB$RELATION_CONSTRAINTS RC
WHERE RC.RDB$CONSTRAINT_TYPE = :TIPO_CONSTRAINT
AND RDB$RELATION_NAME = :TABELA
INTO :V_CONSTRAINT;
EXECUTE STATEMENT :SQL ;
end
TABELA varchar(50),
TIPO_CONSTRAINT varchar(50))
as
declare variable SQL varchar(100);
begin
SELECT
'ALTER TABLE ' || TRIM(RC.RDB$RELATION_NAME) ||
' DROP CONSTRAINT ' || TRIM(RC.RDB$CONSTRAINT_NAME) || ';'
FROM RDB$RELATION_CONSTRAINTS RC
WHERE RC.RDB$CONSTRAINT_TYPE = :TIPO_CONSTRAINT
AND RDB$RELATION_NAME = :TABELA
INTO :V_CONSTRAINT;
EXECUTE STATEMENT :SQL ;
end