У меня есть веб-приложение, в котором я взаимодействую с базой данных MySql. Когда я удаляю запись, кажется, что ее слот повторно используется при следующем создании новой записи. Так как каждая запись имеет последовательный первичный ключ, следующая запись будет содержать новый ключ 5, но новая запись будет помещена в последнее опустошенное место, скажем, где была номер записи 2. Есть ли способ добавить новые записи непосредственно в нижней части списка? Есть ли способ сделать это с помощью MySQL Query Browser?
Это пример того, что я описываю:
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 в вашей таблице)
создание поля даты (date_added) и ORDER BY date_added было бы лучше
Вы можете создать триггер "на вставке", который использует последовательность для установки идентификатора (запись из памяти в соответствии с 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, поэтому я не уверен, есть ли другая альтернатива.