Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Автоинкремент при INSERT INTO будет ли идти подряд без пропусков / 3 сообщений из 3, страница 1 из 1
18.01.2018, 18:42
    #39586655
Гулин Федор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент при INSERT INTO будет ли идти подряд без пропусков
Добрый день всем.
MySQL 5.6

INSERT INTO R1
SELECT @Now , 1 , @Now FROM tmp1 ;

Set @first_id = LAST_INSERT_ID() ;

R1 содержит автоинкерментое поле id к-е является ПК.

Мне надо получить ВСЕ ид вставленные в R1
LAST_INSERT_ID() возвращает 1-е ид
Пока я один на тестовом окружении я могу просто добавить
SELECT COUNT(*) FROM tmp1
И сгенерить диапазон с @first_id по @first_id + count()-1

Это надо для того что послел. записи должны ссылаться на R1 через FK
(т.е пока я завязал на это алгоримт разового скрипта к-й будет апдйеnить данные но не уверен что это ОК
хотя на тесте все хорошо - но я там один )

Вопрос если кто-то полезет вставлять записи во время выполенния запроса
есть ли гарантия что id вставленные в моем запросе будут идти по порядку
( т.е НЕ перемешаны с другими и без дырок )

Или надо все же потом из R1 отдельным запросом вытаскивать эти Id по условию.
...
Рейтинг: 0 / 0
18.01.2018, 21:21
    #39586726
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент при INSERT INTO будет ли идти подряд без пропусков
Гулин ФедорВопрос если кто-то полезет вставлять записи во время выполенния запроса
есть ли гарантия что id вставленные в моем запросе будут идти по порядкуНет.

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

Гулин ФедорИли надо все же потом из R1 отдельным запросом вытаскивать эти Id по условию.Это ЕДИНСТВЕННЫЙ способ.
...
Рейтинг: 0 / 0
19.01.2018, 14:15
    #39587095
Гулин Федор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент при INSERT INTO будет ли идти подряд без пропусков
Akina,

СПС - согласен
хотя на том енв.
для моей задачи одновеременнй вставки
мне подсказали др. способ через ф-цию

- может кому пригодится
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
INSERT INTO  prod1 ...
            SELECT  		GET_REVISION_ID( UTC_TIMESTAMP(), 1) as rid_id


DELIMITER $$
CREATE FUNCTION get_rid_id(p_datetime DATETIME, p_updated_by BIGINT(20)) RETURNS BIGINT(20)
DETERMINISTIC

BEGIN
	INSERT INTO rid (timestamp, updated_by) VALUES(p_datetime, p_updated_by);

	SET @new_rid_id = LAST_INSERT_ID();

	INSERT INTO rid_log (rid_id,migration,note) 	VALUES		( @new_rid_id, 'comm');

RETURN @new_rid_id;
END$$
DELIMITER ;
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Автоинкремент при INSERT INTO будет ли идти подряд без пропусков / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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