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

发布于 2024-10-22 07:58:25 字数 788 浏览 3 评论 0原文

如何插入到 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);

How can I insert into table1 like: INSERT INTO table1 (description) VALUES ('Some test description here'); and have it return the automatically incremented ID so that I can then insert a row into table2? The description is not guaranteed to be unique. I am using a Java PreparedStatement to insert the value currently with execute()

I have the following table structure:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

阳光①夏 2024-10-29 07:58:25

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

run this query right after the insert completes succesfully: SELECT LAST_INSERT_ID()

叹梦 2024-10-29 07:58:25

试试这个:

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。

你不需要触发 insert &分别选择查询。

Try this:

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

Observe values of data & id.

You don't need to fire insert & select queries separately.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文