Autoincremento sem generator
create trigger ´InsereCidade´ for ´cidade´
active before insert position 0
as
declare variable autoinc integer;
begin
select max(´codigo´) from ´cidade´ into autoinc;
if (autoinc is null) then
autoinc = 0;
autoinc = autoinc + 1;
new.´codigo´ = autoinc;
end
Essa trigger deu certo, mas a duvida é:
como faço para inserir um registro, selecionando o maximo de um campo nessa funcao, pela loja e documento, caso esteja trabalhando com outra tabela ??
Brigaduuuuu ...
[b:87cd693d03]Título editado. Não postar em caixa alta, pois equivale a gritar. Por favor, leia as [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689]Regras de Conduta[/url].[/b:87cd693d03]
Sandra/Moderação
active before insert position 0
as
declare variable autoinc integer;
begin
select max(´codigo´) from ´cidade´ into autoinc;
if (autoinc is null) then
autoinc = 0;
autoinc = autoinc + 1;
new.´codigo´ = autoinc;
end
Essa trigger deu certo, mas a duvida é:
como faço para inserir um registro, selecionando o maximo de um campo nessa funcao, pela loja e documento, caso esteja trabalhando com outra tabela ??
Brigaduuuuu ...
[b:87cd693d03]Título editado. Não postar em caixa alta, pois equivale a gritar. Por favor, leia as [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689]Regras de Conduta[/url].[/b:87cd693d03]
Sandra/Moderação
Wiltefran
Curtidas 0
Respostas
Bon Jovi
23/06/2004
Funciona legal sim, mas pq ser trigger?
Nao sei se entendi bem, pois nao deixou claro qual a estrutura da tabela. Supondo ser tabela DOCUMENTO(ID_DOCUMENTO(pk), ID_LOJA(pk)), via programa, Delphi por exemplo:
´selecionando o maximo de um campo nessa funcao, pela loja e documento, caso esteja trabalhando com outra tabela ´
Nao sei se entendi bem, pois nao deixou claro qual a estrutura da tabela. Supondo ser tabela DOCUMENTO(ID_DOCUMENTO(pk), ID_LOJA(pk)), via programa, Delphi por exemplo:
Novo_Id_Documento_Teste := ObtemNovoId(´DOCUMENTO´, ´ID_DOCUMENTO´, ´ID_LOJA = ´ + IntToStr(Id_Loja_Teste));
function ObtemNovoId(ATabela, ACampo, AWhere: string): integer; overload; function ObtemNovoId(ATabela, ACampo: string): integer; overload; implementation function TDataModule2.ObtemNovoId(ATabela, ACampo, AWhere: string): integer; var SQLDataSet: TSQLDataSet; begin SQLDataSet := TSQLDataSet.Create(nil); try SQLDataSet.SQLConnection := SQLConnection1; SQLDataSet.CommandText := ´SELECT MAX(´ + ACampo + ´) AS MAXIMO ´ + ´FROM ´ + ATabela; if AWhere <> ´´ then SQLDataSet.CommandText := SQLDataSet.CommandText + ´ WHERE ´ + AWhere; SQLDataSet.Open; if SQLDataSet.FieldByName(´MAXIMO´).IsNull then Result := 1 else Result := SQLDataSet.FieldByName(´MAXIMO´).AsInteger + 1; SQLDataSet.Close; finally FreeAndNil(SQLDataSet); end; end; function TDataModule2.ObtemNovoId(ATabela, ACampo: string): integer; begin Result := ObtemNovoId(ATabela, ACampo, ´´); end;
GOSTEI 0