Как убрать sh ID при вставке нового элемента - PullRequest
0 голосов
/ 16 апреля 2020

Допустим, у меня есть база данных SQL с этим

ID: 1; Имя пользователя: Admin
ID: 2; Имя пользователя: John
ID: 3; Имя пользователя: Bill
ID: 5; Имя пользователя: Ray

И я хочу вставить новый элемент перед Джоном с идентификатором 2 вместо
Как я могу получить результат этого?

ID: 1; Имя пользователя: Admin
ID: 2 ; Имя пользователя: NewUser
ID: 3 ; Имя пользователя: John
ID: 4 ; Имя пользователя: Bill
ID: 5; Имя пользователя: Ray

Сервер pu sh Джон и Билл в терминах идентификаторов
Как мне сделать это с помощью SQL команд? Делайте это, используя многократно используемые функции, потому что мой сервер будет часто использовать эту функцию

1 Ответ

1 голос
/ 17 апреля 2020

Как заявили также Strawberry и Gordon Linoff, это очень плохая идея.

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

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

Пожалуйста, не делайте этого.

Однако, если вы настаиваете, есть два шага. Сначала сдвиньте идентификаторы. Вы должны сначала обновить идентификатор для Билла, а затем Джона. Убедитесь, что вы обновляете любые другие таблицы, запросы, закладки или печатные ссылки на этот идентификационный номер. Затем вы можете вставить нового пользователя в старый идентификатор 2, что так же просто, как явное указание фактического идентификатора функции INSERT (или, поскольку вы сказали, что используете phpMyAdmin, просто введите этот номер в поле «Вставка» вместо того, чтобы оставить пусто).

А если серьезно, не делай этого.

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