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 valor…se é algo como:
INSERT INTO TABELA VALUES(0, ‘valor1’);
ou
INSERT INTO TABELA VALUES(null, ‘valor1’);
Alguém pode me ajudar?
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
No postgresql é diferente…ja tentei assim. Valeu!!!
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]
dei uma pesquisada e encontrei isso
[code]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)
);
[/code]
CREATE TABLE tabela
(
codigo serial,
nome varchar(50)
);
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;
}
[quote=“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;
}
[/quote]
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.