Member 13904037 Ответов: 2

Как выбрать последний идентификатор в mysql/C#


MySqlConnection connection = new MySqlConnection("источник данных=123.456.789 ;порт=3306;имя пользователя=blabla ;пароль=blabla");
Команда MySqlCommand;
MySqlDataReader mdr;


соединение.Открыть();
строка selectQuery = "SELECT_LAST_INSERT_ID() * из mysqlcshap.Аламиерунг";
command = new MySqlCommand(selectQuery, connection);
mdr = команда.Метода executereader();
если (МЛУ.Читать())

Что я уже пробовал:

Как я могу это исправить?



SELECT_LAST_INSERT_ID() * FROM 

Dave Kreskowiak

Зачем тебе это нужно?

Patrice T

Что вы хотите сделать с этим удостоверением личности ?

2 Ответов

Рейтинг:
1

OriginalGriff

Просто: не надо.
Это вообще не имеет отношения к делу, и особенно к тому, как вы его используете или планируете использовать.

Проблема в том, что MySql по своей природе является многопользовательской системой, что создает проблемы, если вы пытаетесь использовать последнее значение идентификатора, независимо от того, для чего вы хотите его использовать.

Если вы хотите использовать его для доступа к только что созданным данным, Вы не можете сделать это надежно, так как полученное значение может не иметь отношения к вашему пользователю - оно вполне могло быть создано совершенно другим пользователем. Единственный способ получить нужный идентификатор-это выбрать его как часть операции вставки с помощью LAST_INSERTED_ID[^] функционируют как часть одной и той же команды или, по крайней мере, одного и того же соединения.

Если вы хотите использовать его для предоставления значения "следующего идентификатора", добавив его к нему до того, как вы фактически сделаете вставку, это еще более опасно, потому что вы не можете знать, как долго он будет использоваться, и этот идентификатор уже может быть использован многими другими пользователями, и в результате целостность вашей базы данных будет полностью нарушена.

Вам никогда не понадобится значение ID, пока строка не будет вставлена, и любая система, которая полагается на "предсказание" значений ID, потерпит неудачу в производстве некоторыми действительно, очень неприятными способами.

Если вы пытаетесь использовать автоматические значения идентификаторов для предоставления внешних ключей, то я настоятельно рекомендую вам использовать вместо них значения идентификаторов GUID, чтобы вы могли контролировать происходящее. Идентификатор строки вообще не должен использоваться в качестве идентификатора пользователя или customerID...


Eric Lynch

OriginalGriff, как обычно, дает здесь мудрые советы. Я бы добавил один пункт, на случай, если вам понадобится создать личность. В дополнение к GUID, MySQL также поддерживает столбцы AUTO_INCREMENT, см.: https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html

Рейтинг:
0

#realJSOP

Попробовать это:

SELECT MAX(ID) AS LastInsertedID;