Duvida sobre PRIMARY KEY

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

a tabela criada é:

[code]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’)
;[/code]

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

eu pensei em fazer:

[code] 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);
    }[/code]

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?

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

como ficaria entao isso??

[code]CREATE TABLE clinicas (
codigo INT NOT NULL AUTO_INCREMENT,
nome varchar (20) NOT NULL ,
PRIMARY KEY (codigo)

)
;[/code]
~
isso??

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

isso mesmo, ou vc poderia fazer um select max

SELECT MAX(codigo) FROM CLINICAS

e vc incrementa o valor retornado e usa ele.

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???

com auto increment fica

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

problema resolvido!

obrigado mesmo! :wink: