2011-03-15 141 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。

您無需觸發插入&分別選擇查詢。

相關問題