Array
(
)

Alguem sabe como posso fazer isso via sql?

Edon Ramos
   - 27 abr 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

Cesar Roniglei
   - 02 mai 2013

Bom dia, você pode efetuar uma verificação antes da inserção, caso haja 25 inserções você não efetua a inserção.
Ex:

#Código

Select Count(*) As Qtde From Tabela
Where Nome = @Nome

Mariana Carvalho
   - 02 mai 2013

não sabia e nem sei se tem essa possibilidade, mas fiquei de olho neste post, isso me pode ser bastante util.
legal a sua duvida.

Alex Lekao
   - 02 mai 2013

Ola Boa tarde!!!!

Acredito que seria interessante tentar usar uma trigguer ou verificar se ha alguma possibilidade de fazer isso mediante restricao do campo ou tabela, nao tenho muita certeza de como utilizar em nenhum dos dois pq nao tenho o habito de utilizar, mas verifique alguma coisa a este respeito, restricoes de tabelas/campos e trigguer.

Acredito que conseguira fazer o que precisa.

Espero ter ajudado.

Abraco.

Alex - Lekao

Joel Rodrigues
   - 02 mai 2013

Eu vejo duas opções para fazer isso, sendo a primeira mais interessante que a segunda:

1) Use um stored procedure para fazer a inserção. Nele fica fácil controlar essa quantidade.

2) Crie um trigger before insert na tabela. Nele você conta os registros a partir do nome que está sendo inserido e, caso atinja a quantidade definida, gere um erro para cancelar o insert (use a função RAISEERROR).

Guilherme Wiethaus
   - 24 mai 2013

Coloque isto numa trigger do tipo "AFTER INSERT"

Através de uma trigger (gatilho) todo conteúdo inserido vai em uma tabela temporária chamada inserted.

O código abaixo precisa ser aperfeiçoado, é apenas exemplificação e não se presta para meio de produção, pois requer algumas verificações no relacionamento entre as tabelas. Por exemplo pode haver funciona´rios com mesmo nome pas são pessoas diferentes. O mais correto no relacionamento entre tabelas seria através de um código dele ou seu cpf, já que estes registro é incluído uma vez e não poderá ser modificado. Assim se prestando como chave de registro para um bom relacionamento.

#Código

BEGIN TRY

  SET NOCOUNT ON;

  If EXISTS (SELECT Count(Funcionarios.*) As Qtde
             FROM Funcionarios INNER JOIN inserted on inserted.Nome = Funcionarios.Nome
             WHERE Funcionarios >= 25)
  BEGIN
     RAISERROR ('Erro 001: Funcionario já chegou ao limite de inclusão.', 16, 1);
     RETURN;
  END;

END TRY
BEGIN CATCH
  DECLARE @ErrorMessage NVARCHAR(4000);
  DECLARE @ErrorSeverity INT;
  DECLARE @ErrorState INT;

  SELECT @ErrorMessage = ERROR_MESSAGE();
  SELECT @ErrorSeverity = ERROR_SEVERITY();
  SELECT @ErrorState = ERROR_STATE();

  ROLLBACK TRAN;

  RAISERROR (@ErrorMessage, -- Message text.
             @ErrorSeverity, -- Severity.
             @ErrorState -- State. 
  );
  PRINT 'ERROR_MESSAGE: ' + @ErrorMessage + ' ERROR_SEVERITY ' + 
        CAST(@ErrorSeverity AS VARCHAR(50)) + ' ERROR_STATE: ' + 
        @ErrorState;
  RETURN;
END CATCH