使用java在mysql中将行插入表时如何获得自动递增的列值?

时间:2011-03-15 23:34:45

标签: java mysql select insert

如何插入table1,如:INSERT INTO table1 (description) VALUES ('Some test description here');并让它返回自动递增的ID,以便我可以在table2中插入一行?描述不保证是唯一的。我使用Java PreparedStatement插入当前使用execute()

的值

我有以下表结构:

CREATE TABLE table1 (
    table1ID INTEGER NOT NULL AUTO_INCREMENT,
    description VARCHAR(255) NOT NULL,
    CONSTRAINT PK_table1 PRIMARY KEY (table1ID)
);

CREATE TABLE table2 (
    table1ID INTEGER NOT NULL,
    personID INTEGER NOT NULL,
    CONSTRAINT PK_table2 PRIMARY KEY (table1ID, personID)
);

ALTER TABLE table2 ADD CONSTRAINT FK_table1_table2
FOREIGN KEY (table1ID) REFERENCES table1 (table1ID);

ALTER TABLE table2 ADD CONSTRAINT FK_table2_person
FOREIGN KEY (personID) REFERENCES person (personID);

2 个答案:

答案 0 :(得分:3)

在插入成功完成后立即运行此查询:SELECT LAST_INSERT_ID()

答案 1 :(得分:3)

试试这个:

PreparedStatement st = con.prepareStatement(
                    "Insert into table1 (name) values ('test desc')",
                    Statement.RETURN_GENERATED_KEYS);

            st.executeUpdate();

            ResultSet rs = st.getGeneratedKeys();
            if(rs.next())
            {
                int data = rs.getRow(); 
                int id = rs.getInt(1);
            }

观察数据的价值&标识。

你不需要点燃插入物和单独选择查询。