Вставка одного идентификатора auto_increment в две разные таблицы - PullRequest
0 голосов
/ 01 мая 2018

Я использую две таблицы в базе данных. Первая таблица предназначена для хранения личных данных студентов, где один столбец - auto_increment с именем Student_id. У меня есть другая таблица для хранения сведений о предмете, которая также содержит Student_id, который имеет отношения внешнего ключа с ранее упомянутым столбцом.

Как я могу использовать одно и то же значение идентификатора для обеих таблиц. Теперь я использую Java PreparedStatement для отправки запроса отдельно для обновления обеих таблиц (без идентификаторов). как,

PreparedStatement preparedStatement = connection.prepareStatement("query");
preparedStatement.setString(i,"parameter");
preparedStatement.executeUpdate();

Я проделал одно и то же для двух таблиц, но возможно ли обновление с одинаковым auto_id в обеих таблицах? Может ли кто-нибудь помочь с реализацией Java.

Схема БД выглядит следующим образом: enter image description here

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Поскольку имя таблицы не упомянуто, я рассматриваю имя таблицы, которое используется как ParamsTable, и вот поток!

Вы делаете вставку, как указано в вашем коде (опубликовано в вопросе)!

PreparedStatement preparedStatement = connection.prepareStatement("query");
preparedStatement.setString(i,"parameter");
preparedStatement.executeUpdate();

После этого вам нужно будет выполнить запрос SELECT, чтобы получить последний вставленный идентификатор (идентификатор с автоинкрементом) из вашего ParamsTable

ResultSet resultSet = preparedStatement.executeQuery("SELECT last_insert_id() AS last_inserted_id");
String lastInsertedID = resultSet.getString("last_inserted_id");

Теперь у вас будет последний вставленный идентификатор столбца auto_increment, который вы можете использовать в любой таблице по вашему выбору!

Надеюсь, это поможет!

0 голосов
/ 01 мая 2018

попробуйте это:

PreparedStatement preparedStatement = connection.prepareStatement("query");
preparedStatement.setString(i,"parameter");
preparedStatement.executeUpdate();
ResultSet generatedKeys = preparedStatement.getGeneratedKeys()
if (generatedKeys.next()) {
    user.setId(generatedKeys.getLong(1));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...