Descobrir nome da Constraint PK da Tabela
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.
[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
Curtidas 0
Respostas
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;
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
22/05/2009
Faltou só falar esse código é para Firebird! ;)
GOSTEI 0