Alguem sabe como posso fazer isso via sql?
27/04/2013
0
exemplo
a tabela funcionarios so aceita o nome joao ate 25 vezes repetidamente
Edon Ramos
Posts
02/05/2013
Cesar Roniglei
Ex:
Select Count(*) As Qtde From Tabela Where Nome = @Nome
02/05/2013
Mariana Carvalho
legal a sua duvida.
02/05/2013
Alex Lekao
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
02/05/2013
Joel Rodrigues
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).
24/05/2013
Guilherme Wiethaus
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.
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
Clique aqui para fazer login e interagir na Comunidade :)