Array
(
)

Trigger de incremento no código do cliente!!

Maxymus
   - 09 set 2009

Olá amigos do fórum. Sou inciante neste maravilhoso banco de dados, tendo, a princípio, mais conhecimento dem firebird. Estou desenvolvendo uma aplicação a pedido de um cliente usando o banco de dados SQL SERVER EXPRESS EDITION 2005 com MANAGEMENT STUDIO, e não sei como gerar um incremento para a chave primária CODCLI int not null.
No firebird, uso a trigger assim:

set term^;
create trigger seqcli for tb_cli
active before insert position 0
as
declare variable seq integer;
begin
select max(codcli) from tb_cli into seq;
if (seq is null) then seq = 0;
seq = seq+1;
new.codcli = seq
end^
set term;^

gostaria de saber como faço isso no Sql Server. De preferência, usando o mesmo princípio da trigger acima do firebird, sem usar StoredProcedure ou Recursos atribuidos ao proprio banco com Campo autoincremento.

Grato a todos,

obrigado pela ajuda atencipadamente!!

Brainrj
   - 10 set 2009

eu sempre uso o autoincremento...
mas como vc quer fazer sem... uma solução seria

#Código

declare @cod int;
set @cod = (select case when max(cod) is null then 0 else max(cod)+1 end from teste);
insert into teste(cod,nome)values(@cod,´eric´);


não tenho muita pratica em sql server talvez tenha uma forma mais facil de fazer isso

Renato Tavares
   - 10 set 2009

Olá, Boa Tarde..!! 8)

No SQL Server, você deve utilizar a função IDENTITY, veja: :wink:

DROP TABLE #TESTE

CREATE TABLE TESTE (CODIGO NUMERIC(3) IDENTITY (1,1) CONSTRAINT PK_AG PRIMARY KEY,
NOME VARCHAR(20))

INSERT INTO TESTE VALUES (´RENATO´)
INSERT INTO TESTE VALUES (´RENAN´)
INSERT INTO TESTE VALUES (´JORGE´)

SELECT *FROM TESTE