Вопросы

суть: аккаунт должен перенесён в другую таблицу и удалиться из нынешней

format(MYSQL_GLOBAL, sizeof(MYSQL_GLOBAL), "INSERT INTO `delacc` SELECT * FROM `accounts` WHERE `nickname` = '%s'", params[0]);
mysql_function_query(MySQLGo, MYSQL_GLOBAL, true"""");
format(MYSQL_GLOBAL, sizeof(MYSQL_GLOBAL), "DELETE FROM `accounts` WHERE `nickname` = '%s'", params[0]);
mysql_query(MySQLGo, MYSQL_GLOBAL);

не срабатывает запрос и в mysql_log ошибка: [ERROR] CMySQLQuery::Execute[] - (error #1136) Column count doesn't match value count at row 1

Поделиться сообщением


Ссылка на сообщение

8 ответов на этот вопрос

  • 0
1 час назад, trevison сказал:

тогда нельзя будет зарегистрироваться под этим аккаунтом

 

С чего бы это? Просто будете рассматривать два атрибута для того, чтобы понять, есть ли валидный зарегистрированный аккаунт с некоторым именем, и извлекать ID найденного аккаунта. И именно по полученному ID в дальнейшем работать с аккаунтом.

 

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

 

изображение_2023-08-24_214440576.png

 

И, соответственно, для того, чтобы удалить аккаунт с ID 10, будет достаточно создать в таблице deleted_accounts новую запись, записав в поле account_id значение 10. А для того, чтобы проверить, есть есть ли валидный аккаунт с некоторым именем, найдите все ID аккаунтов, которые имеют искомое имя, и проверьте, точно ли есть хотя бы один ID, отсутствующий в таблице deleted_accounts.

Поделиться сообщением


Ссылка на сообщение
  • 1

@trevison, в чем целесообразность того, что вы пытаетесь сделать?

Поделиться сообщением


Ссылка на сообщение
  • 0

удаление аккаунта с возможностью дальнейшего восстановления

аккаунт уходит в резервную таблицу, а с основной таблицы аккаунт удаляется

появляется возможность восстановить удалённый аккаунт

Поделиться сообщением


Ссылка на сообщение
  • 0

@trevison, опять тот же вопрос: в чем целесообразность? Зачем удалять аккаунт из основной таблицы? Создавайте новое поле в основной таблице, в котором храните признак удаленного аккаунта. 

Поделиться сообщением


Ссылка на сообщение
  • 0

тогда нельзя будет зарегистрироваться под этим аккаунтом

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

Поделиться сообщением


Ссылка на сообщение
  • 0

хороший вариант реализации, но если так делать, то нужно будет ещё очень много кода переписывать, где проверка идёт на ник ( например: /offjail /offwarn /offmute и всё оффлайн взаимодействие с игроком )

Поделиться сообщением


Ссылка на сообщение
  • 0

@trevison, с таким подходом далеко не уедете.

Поделиться сообщением


Ссылка на сообщение
  • 0

хорошо, спасибо вам за совет по реализации

тему можно закрывать

Отредактировано пользователем trevison

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент