restrição de quantidades de registros via sql

Firebird

27/04/2013

como fazer com que um registro possa ser inserido com determinado nome,determinado numero de vezes

exemplo

a tabela funcionarios so aceita o nome joao ate 25 vezes repetidamente
Edon Ramos

Edon Ramos

Curtidas 0

Respostas

Edon Ramos

Edon Ramos

27/04/2013

Galera eu fiz isso aqui


CREATE TRIGGER "LIM_REGISTROS" FOR "PREFEITURA"
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable NTOT integer;
begin
select count(*) from prefeitura where cargoflu='Assessor Diretor Nível VII' into :ntot;
if (:ntot = 2) then
exception lim_registros;


só que quando eu estou cadastrando ele não entende que é só o cargoflu ele coloca a tabela inteira....
GOSTEI 0
Alvaro Vieira

Alvaro Vieira

27/04/2013

Segue a rotina que testei, observe que você se esqueceu de colocar a análise "new". testei aqui e só deixou cadastrar 2 registros de cada cargo.
Abraço.


/******************************************************************************/
/****     Following SET SQL DIALECT is just for the Database Comparer      ****/
/******************************************************************************/
SET SQL DIALECT 3;


SET TERM ^ ;



CREATE OR ALTER TRIGGER PREFEITURA_BI0 FOR PREFEITURA
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable ntot integer;
begin
  select count(*)
  from prefeitura
  where cargoflu=new.cargoflu
  into :ntot;

  if (:ntot = 2) then
    exception lim_registros;

end
^


SET TERM ; ^

GOSTEI 0
Edon Ramos

Edon Ramos

27/04/2013

Sim correto eu tinha conseguido já...
mas ao invés de usar o before se usa o after,pois senão a trigger não volta com o ultimo valor inserido na tabela

;)
GOSTEI 0
William

William

27/04/2013

Finalizando, qualquer dúvida inicie outro tópico por gentileza!!
GOSTEI 0
POSTAR