Tipo Interger auto incremento
No postgre não é possivel ter um tipo de dado interger como auto incremento? somente o serial e o bigserial?
Flaviano Martins
Curtidas 0
Respostas
Marisiana Battistella
30/10/2014
É possível sim, você tem que criar uma sequence para o campo em questão...
GOSTEI 0
Ronaldo Lanhellas
30/10/2014
Faça assim:
CREATE TABLE tabela1(
id integer primary key default nextval('nome_da_sequence');
);
GOSTEI 0
Flaviano Martins
30/10/2014
O que é esse sequence?
não entendi esse trecho
por favor, pode me explicar?
não entendi esse trecho
default nextval('nome_da_sequence');por favor, pode me explicar?
GOSTEI 0
Marisiana Battistella
30/10/2014
No PostgreSQL o funcionamento do auto-incremento é controlado por meio de uma sequence (sequências).
O recurso auto increment do PostgreSQL não é apenas uma opção na coluna e sim uma série de fatores que juntos determinam o efeito de somar um (ou n à sua chave primária).
Sequence (sequência) é um recurso do PostgreSQL utilizado para gerar números sequenciais.
Nextval é uma função do PostgreSQL utilizada para obter o próximo valor de uma sequence.
Default value (valor padrão) é um recurso disponibilizado em uma coluna para determinar um valor padrão que o campo assumirá caso nada seja informado no comando de insert.
Sequence Manipulation Functions: [url]http://translate.google.com.br/translate?hl=pt-BR&sl=en&tl=pt&u=http%3A%2F%2Fwww.postgresql.org%2Fdocs%2F9.3%2Fstatic%2Ffunctions-sequence.html&anno=2[/url]
Default values: [url]http://www.postgresql.org/docs/9.3/static/ddl-default.html[/url]
O recurso auto increment do PostgreSQL não é apenas uma opção na coluna e sim uma série de fatores que juntos determinam o efeito de somar um (ou n à sua chave primária).
Sequence (sequência) é um recurso do PostgreSQL utilizado para gerar números sequenciais.
Nextval é uma função do PostgreSQL utilizada para obter o próximo valor de uma sequence.
Default value (valor padrão) é um recurso disponibilizado em uma coluna para determinar um valor padrão que o campo assumirá caso nada seja informado no comando de insert.
Sequence Manipulation Functions: [url]http://translate.google.com.br/translate?hl=pt-BR&sl=en&tl=pt&u=http%3A%2F%2Fwww.postgresql.org%2Fdocs%2F9.3%2Fstatic%2Ffunctions-sequence.html&anno=2[/url]
Default values: [url]http://www.postgresql.org/docs/9.3/static/ddl-default.html[/url]
GOSTEI 0
Flaviano Martins
30/10/2014
Certissimo Marisiana, obrigado.
GOSTEI 0
Marisiana Battistella
30/10/2014
Por nada! =)
GOSTEI 0
Flaviano Martins
30/10/2014
Voltando aqui para informar mais, fazendo pela ferramenta visual, entendi melhor, é claro que vocês me ajudaram bastante. assim que crio uma chave primaria já a aparece o sequence.
GOSTEI 0
Flaviano Martins
30/10/2014
Com as minhas palavras:
Quando crio um campo serial, obrigatoriamente cria-se uma sequencia(auto-incremento) mas posso fazer separadamente, criando uma sequencia e depois uma tabela com campo diferente de serial, esse resumo, está procedente?
Quando crio um campo serial, obrigatoriamente cria-se uma sequencia(auto-incremento) mas posso fazer separadamente, criando uma sequencia e depois uma tabela com campo diferente de serial, esse resumo, está procedente?
GOSTEI 0
Flaviano Martins
30/10/2014
Por favor, me deem um retorno se realmente o que escrevi está correto! obrigado.
GOSTEI 0
Marisiana Battistella
30/10/2014
Não sei se entendi exatamente o que vc quis dizer...
Mas você pode criar a tabela normal, definindo as PK e FK, e depois criar a sequence para o campo que será autoincremento.
Mas você pode criar a tabela normal, definindo as PK e FK, e depois criar a sequence para o campo que será autoincremento.
GOSTEI 0
Flaviano Martins
30/10/2014
Foi mais ou menos o que quis dizer, vi uma video aula e tentei escrever o que achei do que foi explicado e do que eu vi. o que especificamente vc não entendeu do que escrevi abaixo?
Quando crio um campo serial, obrigatoriamente cria-se uma sequencia(auto-incremento) mas posso fazer separadamente, criando uma sequencia e depois uma tabela com campo diferente de serial, esse resumo, está procedente?
GOSTEI 0
Fernando C
30/10/2014
é possivel sim, claro.. de uma olhada na documentação:
http://www.postgresql.org/docs/9.2/static/sql-createsequence.html
http://www.postgresql.org/docs/9.2/static/sql-createsequence.html
GOSTEI 0
Flaviano Martins
30/10/2014
Obrigado Fernando.
GOSTEI 0
Marisiana Battistella
30/10/2014
Desculpa Flaviano, foi mal entendido meu.
Eu não conhecia esse tipo de dados serial, sempre utilizei integer, mas fui pesquisar pra ver o que é...
Você pode criar a tabela e a sequence normalmente e executar a sequence no INSERT ou então criar uma trigger para executar a sequence sempre que ocorrer uma inserção.
Eu não conhecia esse tipo de dados serial, sempre utilizei integer, mas fui pesquisar pra ver o que é...
Você pode criar a tabela e a sequence normalmente e executar a sequence no INSERT ou então criar uma trigger para executar a sequence sempre que ocorrer uma inserção.
GOSTEI 0
Marisiana Battistella
30/10/2014
Veja um exemplo de como é possível fazer no PostgreSQL:
CREATE TABLE tab_cliente
(
idcliente integer NOT NULL,
nomecliente character varying(50),
CONSTRAINT pk_tabcliente PRIMARY KEY (idcliente)
);
CREATE SEQUENCE seq_idcliente
INCREMENT 1
MINVALUE 1
MAXVALUE 100
START 1
CACHE 1;
ALTER TABLE seq_idcliente
OWNER TO postgres;
INSERT INTO tab_cliente (idcliente, nomecliente)
VALUES ( nextval('seq_idcliente'), 'FULANO');
GOSTEI 0
Flaviano Martins
30/10/2014
Vi dessa forma tambem na video aula, tanto utilizando a ferramenta grafica quanto codificando.
GOSTEI 0
Ronaldo Lanhellas
30/10/2014
Vi dessa forma tambem na video aula, tanto utilizando a ferramenta grafica quanto codificando.
O "serial" é um atalho para que foi citado acima pela Marisiana.
GOSTEI 0
Marisiana Battistella
30/10/2014
Como assim um atalho, Ronaldo?
Na interface gráfica do PostgreSQL tem um tipo de dados que se chama serial, vc se refere a ele?
Na interface gráfica do PostgreSQL tem um tipo de dados que se chama serial, vc se refere a ele?
GOSTEI 0
Ronaldo Lanhellas
30/10/2014
Como assim um atalho, Ronaldo?
Na interface gráfica do PostgreSQL tem um tipo de dados que se chama serial, vc se refere a ele?
Na interface gráfica do PostgreSQL tem um tipo de dados que se chama serial, vc se refere a ele?
Sim, o serial é apenas um atalho. Quando você usa serial, é o mesmo que você estiver definindo "INTEGER" no campo e criando uma sequence.
GOSTEI 0
Marisiana Battistella
30/10/2014
Entendido Ronaldo!
Obrigada!
Obrigada!
GOSTEI 0
Flaviano Martins
30/10/2014
Essa explicação sem duvidas é a melhor que encontrei Ronaldo Marisiana, assim fica mais facil de aprender! Obrigado!
GOSTEI 0
Marisiana Battistella
30/10/2014
Por nada Flaviano!
GOSTEI 0