2011-03-15 134 views
1

如何插入到表1中,例如:INSERT INTO table1 (description) VALUES ('Some test description here');并让它返回自动递增的ID,以便我可以在table2中插入一行?描述不保证是唯一的。我使用的是Java的PreparedStatement目前与​​如何在使用java在mysql中插入一行时自动增加列值?

插入值,我有以下表结构:

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); 
+0

可能重复的[如何在数据库表中检索行,现在只用Java添加](http://stackoverflow.com/questions/2018379/how-to-retreive-row-in-db-table-just-added - 现在-在-java的) – 2011-03-15 23:37:10

回答

3

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

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); 
      } 

观察数据值& id。

您无需触发插入&分别选择查询。

相关问题