powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL for Visual Studio (AUTO_INCREMENT)
25 сообщений из 51, страница 2 из 3
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135178
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяи чем оно будет отличаться от last insert id ?
LAST_INSERT_ID() возвращает сгенерированное значение для первой записи последнего запроса. УЖЕ вставленное. Т.е. имеющееся в таблице.
SHOW TABLE STATUS показывает значение, которое будет первым сгенерировано при следующем запросе. Т.е. оно в таблице отсутствует.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135197
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561miksoft
Код: sql
1.
SHOW TABLE STATUS LIKE 'table_name'


И что вы собираетесь там увидеть по теме топика? Ну если только оценить объем данных для миграции... Хочу заступится за данное решение - если Вы попробуете данный запрос, то увидите одно из полей Auto_Increment.Да, есть такое. Однако:
AkinaА смысл? даже немедленно после получения значения выполненный INSERT запросто может вставить ДРУГОЕ значение.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135219
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Введу упрощение задачи - только я имею доступ к БД, т.е. никто, кроме меня не может добавить запись в БД, а значит значение AUTO_INCREMENT не может измениться случайным образом.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135225
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561Введу упрощение задачи - только я имею доступ к БД, т.е. никто, кроме меня не может добавить запись в БД, а значит значение AUTO_INCREMENT не может измениться случайным образом.Ну тогда берите MAX(ID)+1 для следующего номера, и всех делов.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135226
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не гарантирует правильность результата.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135229
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561Это не гарантирует правильность результата.Что значит "не гарантирует" ? Вы же сами решили, что "только я имею доступ к БД". Как еще он может измениться?
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135234
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Элементарно - я неделю назад удалил несколько последних записей и уже, естественно, забыл об этом.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135237
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561Элементарно - я неделю назад удалил несколько последних записей и уже, естественно, забыл об этом.Ну и что?
Если это были последние записи, то MAX(ID)+1 даст верный результат.
Есди это были непоследние записи, то все равно MAX(ID)+1 даст верный результат, в том смысле, что это значение можно смело использовать для вставки в таблицу, нарушения уникальности не возникнет. Так образом, роль первичного ключа - однозначно идентифицировать запись - не будет нарушена. А то что будут пропуски, так это не имеет никакого значения, они всегда будут. Первая же откатившаяся транзакция с INSERT-ом даст пропуск. Да и в других, сугубо технологических, случаях могут возникать пропуски.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135243
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слушающий да услышит. Ощущение разговора глухого с немым. Если Вам кажется данное решение достаточным, пользуйтесь. Мне оно не подходит - выше я уже объяснял почему. Пока единственное, известное мне, корректное решение, это запрос
Код: sql
1.
SHOW TABLE STATUS LIKE 'table_name'


Предложены также следующие решения:
Код: sql
1.
LAST_INSERT_ID()

- некорректно, если последняя операция добавления была групповой
Код: sql
1.
MAX(ID)+1

- некорректно, если после последнего добавления записей производилось удаление записей с max значением ключа.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135257
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561,

1) а зачем вы вводите данные вручную в поле с автоинкрементом?
если уберете его из INSERT запроса, оно будет вводится автоматически.

2) можно отключить автоинкремент на время переноса данных
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135264
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561Мне оно не подходит - выше я уже объяснял почему.Нет, не объяснили. Впрочем, я не настаиваю на объяснении.
gai561Пока единственное, известное мне, корректное решение, это запрос
Код: sql
1.
SHOW TABLE STATUS LIKE 'table_name'


Код: sql
1.
MAX(ID)+1


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

gai561
Код: sql
1.
LAST_INSERT_ID()


- некорректно, если последняя операция добавления была групповойБолее того, вызов этой функции имеет смысл только в той сессии, в которой была произведена успешная вставка записи в таблицу с автоинкрементом. В противном случае её результат не определен.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135270
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561Введу упрощение задачи - только я имею доступ к БД, т.е. никто, кроме меня не может добавить запись в БД, а значит значение AUTO_INCREMENT не может измениться случайным образом.
Наивный... поищи темы про "дырки в автоинкременте".
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135315
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561, если "только вы имеете доступ к БД", так и ведите учёт своих ключей локально (в текстовом файлике, ха-ха) - и будете железобетонно уверены, что сервер ничего "плохого" с ними не сделает. А то ишь, развели тут мути, умники. Ласт_инсерт_ид всякие, добавление по одной записи... тьпху, срамота!
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135405
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirgai561, если "только вы имеете доступ к БД", так и ведите учёт своих ключей локально (в текстовом файлике, ха-ха) - и будете железобетонно уверены, что сервер ничего "плохого" с ними не сделает. А то ишь, развели тут мути, умники. Ласт_инсерт_ид всякие, добавление по одной записи... тьпху, срамота!
Я от души пожелаю Вам авто с кондиционером, только вот без кнопочки его включения - ездите с открытыми окнами - будет прохладно.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135418
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю к предыдущему посту: несмотря на всю наивность и кажущуюся смехотворность предложения, я действительно склоняюсь к мысли, что для баз, пользователи которых общаются с помощью программ на Visual Studio, стоит отказаться от автоинкрементных ключей исходя з особенностей VS. Ха-ха.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135445
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinaвадяи чем оно будет отличаться от last insert id ?
LAST_INSERT_ID() возвращает сгенерированное значение для первой записи последнего запроса. УЖЕ вставленное. Т.е. имеющееся в таблице.
SHOW TABLE STATUS показывает значение, которое будет первым сгенерировано при следующем запросе. Т.е. оно в таблице отсутствует.
ну различия не существенны, по сравнению с затратами.
ну и месту применения.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135470
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561я действительно склоняюсь к мысли, что для баз, пользователи которых общаются с помощью программ на Visual Studio, стоит отказаться от автоинкрементных ключей исходя з особенностей VSТаки я правильно предлагал перенести топик в C/C++.
Сейчас переносить не буду. Если будет желание - перезадайте этот вопрос там.

Дабы топик не скатился во флуд, закрываю.
По технической части уже все сказали.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39136109
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По техническим причинам не могу перенести сюда стартовый пост другого топика, поэтому цитирую целиком:
gai561Странное решение закрыть тему. Тема правильно называется и правильно расположена.
Для тех, кому действительно необходимо решение, публикую свое, пока не доработали MySQL for Visual Studio (или кто-то подсказал другое решение):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
static class Service
    {
        static public long Increment(string pNameTable)
        {
            serviceDataSet serviceDataSet = new serviceDataSet();
            serviceDataSet.DataSetName = "serviceDataSet";
            serviceDataSet.SchemaSerializationMode = 
                System.Data.SchemaSerializationMode.IncludeSchema;

           serviceDataSetTableAdapters.tableStatusTableAdapter tableStatusTableAdapter = 
                new serviceDataSetTableAdapters.tableStatusTableAdapter();
            tableStatusTableAdapter.ClearBeforeFill = true;
            MySql.Data.MySqlClient.MySqlCommand lComm = new MySql.Data.MySqlClient.MySqlCommand();
            lComm.CommandText = "SHOW TABLE STATUS LIKE '" + pNameTable + "'";
            tableStatusTableAdapter.Adapter.SelectCommand = lComm;
            
            tableStatusTableAdapter.Fill(serviceDataSet.tableStatus);
            if (serviceDataSet.tableStatus.Rows.Count < 1) return 1;
            serviceDataSet.tableStatusRow lRow = 
                (serviceDataSet.tableStatusRow)serviceDataSet.tableStatus.Rows[0];
            if ( (lRow.Name == pNameTable) &&
                 (lRow.Auto_increment.ToString() != "") )
                return (long)lRow.Auto_increment;
            return 1;
        }
    } 



Прошу модератора возобновить тему и перенести туда это сообщение.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39136159
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяразличия не существенны
Пол младшего ребёнка в семье, и пол ребёнка, которого планируется зачать - не одно и тоже. Верно?
Вот и здесь суть та же. А ты говоришь - несущественны...
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39136206
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доработал решение, теперь оно универсально - бери себе и вставляй в свой проект:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
    static class Service
    {
        static public long Increment(string pConnectionString, string pNameTable)
        {
            System.Data.DataTable tableStatus = new System.Data.DataTable();
            tableStatus.TableName = "tableStatus";

            MySql.Data.MySqlClient.MySqlDataAdapter tableStatusTableAdapter =
                 new MySql.Data.MySqlClient.MySqlDataAdapter();

            MySql.Data.MySqlClient.MySqlCommand lComm = new MySql.Data.MySqlClient.MySqlCommand();
            lComm.CommandText = "SHOW TABLE STATUS LIKE '" + pNameTable + "'";
            MySql.Data.MySqlClient.MySqlConnection lConn = new MySql.Data.MySqlClient.MySqlConnection();
            lConn.ConnectionString = pConnectionString;
            lComm.Connection = lConn;
            tableStatusTableAdapter.SelectCommand = lComm;

            tableStatusTableAdapter.Fill(tableStatus);

            if (tableStatus.Rows.Count < 1) return 1;
            System.Data.DataRow lRow = tableStatus.Rows[0];
            if ((lRow[0].ToString() == pNameTable) && (lRow[10].ToString() != ""))
            {
                ulong AutoIncrementSeed = (ulong)lRow[10];
                return (long)AutoIncrementSeed;
            }
            return 1;
        }
    }


Для получения AUTO_INCREMENT для нужной таблицы использовать вызов типа:
Код: c#
1.
myDataSet.tab1.idKeyColumn.AutoIncrementSeed = Service.Increment(Properties.Settings.Default.myConnectionString, "tab1");
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39136275
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinaвадяразличия не существенны
Пол младшего ребёнка в семье, и пол ребёнка, которого планируется зачать - не одно и тоже. Верно?
Вот и здесь суть та же. А ты говоришь - несущественны...
если ты знаешь в какой момент зачать, чтоб ребёнок был нужного пола, хоть первого, хоть второго
то пол первого ребёнка будет для тебя важен если тебе известно зависимость , где одним из параметром является пол первого ребенка.
а в данном случае зависимость +-1 роли не играет
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39136307
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Ребят, вам действительно негде пофлудить?
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39136316
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странное желание у ТС - это или не владение базами или показать свою значимость?
о каком трафике идет речь?
делать таким образом миграцию большого объёма данных - довольно странное решение.
можно сделать много проще и быстрее.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39136321
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561вадя
Ребят, вам действительно негде пофлудить?
есть , но здесть есть повод :)
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39136428
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561,

а какое практическое применение сием деянием?
Узнали вы автоинкремент, дальше что с ним делаете?
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 2 из 3
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL for Visual Studio (AUTO_INCREMENT)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]