Duvida sobre PRIMARY KEY

6 respostas
Rafael_Marques1

tipo, estou fazendo um programinha pra estudo q insere uma linha nova no banco de dados...

a tabela criada é:

CREATE DATABASE IF NOT EXISTS bd;

USE bd;

DROP TABLE IF EXISTS clinicas;
DROP TABLE IF EXISTS material;

CREATE TABLE clinicas (
	codigo INT NOT NULL,
	nome varchar (20) NOT NULL ,
	PRIMARY KEY (codigo)
	
	
)
;

INSERT INTO clinicas VALUES ( '1', 'centro Cirurgico')
;
	
INSERT INTO clinicas VALUES ( '2', 'Centro Obstetrico')
;	

INSERT INTO clinicas VALUES ( '3', 'Clinica Cirurgica')
;	

INSERT INTO clinicas VALUES ( '4', 'Clinica Médica')
;

e eu queria inserir mais uma clinica, e que fosse automaticamente incrementado o codigo....

eu pensei em fazer:

try
        {
            Class.forName(JDBC_DRIVER);
            
            cn = DriverManager.getConnection(DATABASE_URL, "chmsa", "chmsa");
            st = cn.createStatement();
            ResultSet rs = st.executeQuery("SELECT * FROM clinicas");
                    
            while (rs.next())
                i = Integer.parseInt(rs.getString(1));
                        
            String sql = "INSERT INTO clinicas VALUES('" + i + "', '" + nomeClinica + "')";
            
            st.executeUpdate(sql);
        }

mas nao vai....

como q eu consigo ver ql a ultima linha do banco, e fazer com q a proxima linha tenha o proximo codigo?

6 Respostas

W

porque vc nao define o campo codigo na tabela clinicas como auto_increment, ai o proprio banco gera o proximo id pra vc.

Rafael_Marques1

como ficaria entao isso??

CREATE TABLE clinicas (
	codigo INT NOT NULL AUTO_INCREMENT,
	nome varchar (20) NOT NULL ,
	PRIMARY KEY (codigo)
	
	
)
;
~ isso??

eu to bem no inicio dos estudos... nao manjo muito de sql ainda...

hesenger

isso mesmo, ou vc poderia fazer um select max

SELECT MAX(codigo) FROM CLINICAS

e vc incrementa o valor retornado e usa ele.

Rafael_Marques1

usando o auto_increment, como ficaria o INSERT?

INSERT INTO clinicas VALUES ( ‘novaclinica’ )

nao funciona…

mesmo o codigo (que viria antes) sendo autoincrementavel, eu tenho que mandar um valor pra ele???

hesenger

com auto increment fica

insert into clinicas (nome) values ('teste de nome')
Rafael_Marques1

problema resolvido!

obrigado mesmo! :wink:

Criado 21 de outubro de 2008
Ultima resposta 21 de out. de 2008
Respostas 6
Participantes 3