отключение повторного использования удаленных записей в Mysql

StackOverflow https://stackoverflow.com/questions/1058291

  •  21-08-2019
  •  | 
  •  

Вопрос

У меня есть веб-приложение, в котором я взаимодействую с базой данных MySQL.Когда я удаляю запись, кажется, что ее слот будет повторно использован при следующем создании новой записи.Поскольку каждая запись имеет последовательный первичный ключ, следующая запись будет иметь новый ключ, скажем, 5, но новая запись будет помещена в последнее пустое место, скажем, там, где раньше был номер записи 2.Есть ли способ добавить новые записи непосредственно в нижнюю часть списка?Возможно, есть ли способ сделать это с помощью браузера запросов MySQL?

Это пример того, что я описываю:

1 userName1 password1
2 userName2 password2 --> next operation will delete this record
3 userName3 password3
4 userName4 password4

когда запись № 2 исчезнет, в следующий раз, когда я добавлю новую, запись № 5 займет место под номером 2:

1 userName1 password1
5 userName5 password5
3 userName3 password3
4 userName4 password4

Есть ли рекомендуемый способ указать MySQL (возможно, при создании таблицы), что новые записи должны добавляться только в нижней части списка?итак, мы хотели бы отключить автоматическое повторное использование записи.

Заранее спасибо за вашу помощь С наилучшими пожеланиями

Это было полезно?

Решение

Просто добавьте

ORDER BY id

до конца вашего запроса (где "id" - это столбец 1, 2, 3, 4, 5 в вашей таблице)

Другие советы

Вы можете создать триггер "on insert", который использует последовательность для установки идентификатора (запись из памяти в соответствии с Oracle, поэтому вам нужно будет проверить, отличается ли он в MySQL):

create sequence table_name_id_seq order nocache cycle maxvalue 99999999;

create or replace trigger table_name_id
before insert on table_name for each row
begin
  select table_name_id_seq.nextval
    into :new.id
    from dual
  ;
end;

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

Если вам запрещено использовать InnoDB, я полагаю, вам придется прибегнуть к изменению исходного кода, чтобы адаптировать то, как работает MyISAM.Я не особенно знаком с каким-либо другим "обычным" механизмом хранения данных для MySQL, поэтому я не уверен, есть ли другая альтернатива.

было бы лучше создать поле даты (date_added) и УПОРЯДОЧИТЬ ПО date_added

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top