Увеличение идентификатора базы данных с удаленными записями - PullRequest
0 голосов
/ 29 января 2019

У меня есть записи и отношения в моей базе данных, например, у меня есть база данных транспортных средств с отношениями с водителями.Когда диск связан с транспортным средством, он создает сеанс в истории транспортных средств с vehicle_id и driver_id.

Но когда я удаляю этот автомобиль, давайте признаем, что это vehicle_id = 4, и это последнийзапись транспортного средства, если я создаю другое транспортное средство, оно автоматически приписывает 4 к новому транспортному средству, таким образом, все отношения между старыми транспортными средствами теперь будут приписываться к новому ... я не знаю, объясню ли я достаточно ясно

Как вы думаете, мне нужно оставить транспортное средство в моей базе данных, даже если оно удалено, просто для того, чтобы сохранить счетчик идентификаторов или у вас есть конкретное решение?

Спасибо

Ответы [ 3 ]

0 голосов
/ 29 января 2019

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

Если вы сами управляете идентификаторами (например, new_id = highest_id + 1), ну, вы не должны!

Кроме того, вы должны посмотреть, как ваша система баз данных делает ссылки на внешние ключи, поэтому вы не можете удалять строки, на которые ссылаются другие строки (поэтому такая ситуация не может возникнуть в первую очередь).

0 голосов
/ 29 января 2019

Если когда-либо появится возможность использовать транспортное средство снова, а не удалять его, вы можете оставить строку и ввести столбец состояния.Когда пользователь «удаляет» транспортное средство, вы можете обновить его состояние. Это также может пригодиться для составления отчетов, поскольку вы не удаляете данные.

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

SELECT * FROM vehicles WHERE deleted_date BETWEEN xxx AND xxx AND vehicle_status = 'DELETED';

В ваших существующих запросах вы можете просто выбрать все, где столбец состояния! = 'УДАЛЕНО'.

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

0 голосов
/ 29 января 2019

Установите для идентификатора транспортного средства автоматическое увеличение, поэтому при наличии нового транспортного средства у него будет новый идентификатор.Создайте новый столбец в таблице для vehicle_active и просто установите для него значение 1 или 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...