Descobrir nome da Constraint PK da Tabela

Delphi

22/05/2009

Olá,

[i:22d70f49f2]Vejam a seguinte rotina[/i:22d70f49f2]
SQLQuery1.SQL.Clear;
SQLQuery1.Close;
SQLQuery1.SQL.add(´ALTER TABLE NOME_TABELA DROP CONSTRAINT INTEG_48´);
SQLQuery1.ExecSQL;

SQLQuery1.SQL.Clear;
SQLQuery1.Close;
SQLQuery1.SQL.add(´ALTER TABLE NOME_TABELA ADD PRIMARY KEY (CAMPO_1, CAMPO_2)´);
SQLQuery1.ExecSQL;

Essa rotina faz a mudança do ínidice primário de NOME_TABELA, correto?

Muito bem, agora a minha dúvida: tenho diversas tabelas que preciso fazer isso e algumas delas não sei o nome da constraint relativa à chave primária. Gostaria de elaborar uma rotina que descobrisse esse nome. Tipo:
SQLQuery1.SQL.Clear;
SQLQuery1.Close;
SQLQuery1.SQL.add(´ALTER TABLE NOME_TABELA DROP CONSTRAINT ´ + FuntionGetConstraint_PK_Name);
SQLQuery1.ExecSQL;

É possível fazer isso via Delphi?

Obrigado.


Armindo

Armindo

Curtidas 0

Respostas

Armindo

Armindo

22/05/2009

Eu mesmo respondo, hehe! Deixo registrado para consultas de outros colegas.

Function TDM.VerificaNome_PK(VTabela : String) : String;
begin
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add(´SELECT RDB$CONSTRAINT_NAME FROM RDB$RELATION_CONSTRAINTS WHERE (RDB$RELATION_NAME = ´ + QuotedStr(VTabela) +´ AND RDB$CONSTRAINT_TYPE = ´ + QuotedStr(´PRIMARY KEY´) + ´)´);
SQLQuery1.Open;
result := SQLQuery1.Fields[0].AsString;
end;


GOSTEI 0
Woinch

Woinch

22/05/2009

Faltou só falar esse código é para Firebird! ;)


GOSTEI 0
POSTAR