Auto Incremento

7 respostas
D

Olá, alguém pode me dar um exemplo de como criar uma tabela no postgresql em que um campo codigo seja auto incrementavel?
ex.:

CREATE TABLE tabela

(

codigo ???,

nome varchar(50)

);
e na minha instrucao sql, como eu colocaria o valorse é algo como:

INSERT INTO TABELA VALUES(0, valor1);

ou

INSERT INTO TABELA VALUES(null, valor1);

Alguém pode me ajudar?

7 Respostas

K

cara nunca usei o postgresql
mais no mysql ficaria mais ou menos assim

CREATE TABLE tabela ( codigo integer auto_increment, nome varchar(50) );

e o insert assim:

INSERT INTO TABELA VALUES(null, 'valor1');

espero que tenha ajudado

D

No postgresql é diferente…ja tentei assim. Valeu!!!

J

Cara postgresql é igual no oracle vc tem que criar um sequences e triggers para incremetar.

da uma olhada aqui:

http://pgsqld.active-venture.com/sql-createsequence.html

ou na documentação do banco:

http://www.postgresql.org/docs/7.4/interactive[/url]

K

dei uma pesquisada e encontrei isso

CREATE SEQUENCE nome_da_sequence;

create table produtos (
id_produto integer DEFAULT nextval('nome_da_sequence') NOT NULL,,
descricao char(60),
preco decimal (15,2),
primary key (id_produto)
);
J

CREATE TABLE tabela ( codigo serial, nome varchar(50) );

X

Dae parceiro…
eu tenho um codigo pra geração automatica, não sei se é isso que vc quer, mas aí esta…

// gera o codigo automatico
	private int retornaMaxUsuario() throws Exception {
		String Sql = "select max(Cd_Usuario)+1 as codigo from tab_usuario";
		PreparedStatement s = this.getConexao().prepareStatement(Sql);
		ResultSet rs = s.executeQuery();
		int codigo = 0;
		if (rs.next()) {
			if (rs.getInt("codigo") != 0) {
				codigo = rs.getInt("codigo");
			}
			this.setCd_Usuario(codigo);
		}
		return codigo;
	}
V

“Xandy_bq”:
Dae parceiro…
eu tenho um codigo pra geração automatica, não sei se é isso que vc quer, mas aí esta…

// gera o codigo automatico private int retornaMaxUsuario() throws Exception { String Sql = "select max(Cd_Usuario)+1 as codigo from tab_usuario"; PreparedStatement s = this.getConexao().prepareStatement(Sql); ResultSet rs = s.executeQuery(); int codigo = 0; if (rs.next()) { if (rs.getInt("codigo") != 0) { codigo = rs.getInt("codigo"); } this.setCd_Usuario(codigo); } return codigo; }

Isso numa aplicação com multi usuários pode ser perigoso. O ideal é usar o auto incremento do banco mesmo. Como o jairelton disse, use o tipo de dado serial. Ele cria uma sequence automático.

Criado 8 de novembro de 2006
Ultima resposta 21 de nov. de 2006
Respostas 7
Participantes 6