maomelov Posted April 6, 2012 Report Share Posted April 6, 2012 --ACRESCENTAR UMA COLUNA COM O NOME "NUMERO" Á TABELA EMP. ALTER TABLE EMP ADD NUMERO NUMBER(3) / Podem dizer-me que instrução devo usar para inserir um numero automaticamente numa coluna mas de forma ascendente por outro campo? como mostro no exemplo. --CRIAR UM BLOCO DE PL/SQL QUE INTRODUZ AUTOMATICAMENTE O --NUMERO NA RESPECTIVA COLUNA. --REGRA -- ACRESCENTAR ASCENDENTEMENTE POR DATA DE ADMISSAO (campo HIREDATE DA TABELA EMP) --01/01/2005 - 1 --03/01/2005 - 2 Podem ajudar-me ? --... Link to comment Share on other sites More sharing options...
José Lopes Posted April 6, 2012 Report Share Posted April 6, 2012 Isso tem que passar sempre por código a correr no trigger, se não estou em erro no before insert. Depois tens que usar uma sequência para ir atribuindo o número ou fazer um select ao máximo dos registos existentes e incrementar para determinar o próximo número. por exemplo: select nvl(max(nome_da_coluna),0) + 1 into :new.nome_da_coluna from tabela x: Não testei, mas a ideia é mais ou menos esta...se calhar vais ter que usar por ai uma variável porque não tenho a certeza se esse select vai aceitar a soma.... De qualquer modo, o NVL, será para a o primeiro valor, para transformar o nulo em 0 senão estourava. Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!! Link to comment Share on other sites More sharing options...
metallic Posted April 13, 2012 Report Share Posted April 13, 2012 Penso que queres é fazer um pl/sql para preencher de uma vez a coluna NUMERO com um valor dependente da coluna hiredate certo ? Para isso convinha saber qual a primary key que tens na tabela e depois fazeres algo como DECLARE i INT; BEGIN i := 1; FOR linha IN (SELECT primary_key FROM EMP ORDER BY hiredate ASC) LOOP UPDATE EMP SET number = i WHERE primary_key = linha.primary_key; i := i +1; END LOOP; COMMIT; END; / Deve funcionar para o que queres. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now