Спасибо всем, я попробовал Ubuntu 18.04, и он, кажется, работает, поэтому для Windows это, похоже, ошибка, как сказал Illuminatus.
И спасибо Barbz_YHOOL за объяснение.
Это определенно зависит от фактического содержания Вашей базы данных. Если Вы используете его, чтобы хранить информацию сессии, то любой ценой вытирают его сразу, когда сессия истекает (или закрывается), Вы не хотите того мусора, лежащего вокруг. Поскольку это не может действительно использоваться снова ни для каких практических целей.
В основном, что необходимо спросить себя, я, возможно, должен был бы восстановить эту информацию? Как удаленные вопросы на Так, они должны определенно просто быть отмечены 'удаленные', поскольку мы активно позволяем восстанавливание после удаления. У нас также есть опция отобразить его для выбора пользователей также без большой дополнительной работы.
, Если бы Вы активно не стремитесь полностью восстановить данные, но все еще требуется иметь в наличии их для контроля (или подобный) цели. Я предложил бы, чтобы Вы выяснили (по мере возможности, конечно) схему агрегирования и столкнули это к другой таблице. Это будет содержать Вашу первичную таблицу в чистоте 'удаленных' данных, а также сохранять Вашу вторичную таблицу оптимизированной для контроля целей (или независимо от того, что Вы имели в виду).
Для временных данных, см.: http://talentedmonkeys.wordpress.com/2010/05/15/temporal-data-in-a-relational-database/
Профессионалы использования удалить флага:
Недостатки использования удалить флага:
AND DeletedFlag = 'N'
где-нибудь в Вашем SQLКак дополнение ко всем сообщениям...
Однако, если Вы планируете отметить запись, ее польза для рассмотрения создания представления, для активных записей. Это сохранило бы Вас от записи или упущения флага в Вашем SQL-запросе. Вы могли бы рассмотреть представление для неактивных записей также, если Вы думаете, что также служат цели.
Я рад найти этот поток. Я также задавался вопросом, какие люди думали об этой проблеме. Я реализовывал 'отмеченный, как удалено' в течение приблизительно 15 лет во многих системах. Каждый раз, когда пользователь звонил бы, чтобы сказать, что что-то было случайно удалено, было, конечно, намного легче отметить восстановленный после удаления, чем воссоздают его или восстановление от резервного копирования.
Мы используем postgresql и Ruby на направляющих, похоже, что мы могли сделать это 1 из двух способов, изменить направляющие или добавить, что ondelete инициировал, и делает вместо этого функцию pl/pgsql для маркировки, как удалено. Я склоняюсь к последнему.
Что касается хитов производительности, будет интересно видеть, что результаты ОБЪЯСНЯЮТ - АНАЛИЗИРУЮТ на больших таблицах к немногим удаленным объектам, а также многим удаленным объектам.
В системах, используемых со временем, я нашел, новые пользователи склонны делать, глупым вещам нравится, удаляют вещи случайно. Таким образом, когда люди являются новыми в положении, у них есть все права доступа человека ранее в том положении кроме с нулевым опытом. Случайно удаление чего-то и способности быстро восстановиться возвращает всех для работы быстро.
, Но поскольку кто-то сказал, иногда Вам, возможно, понадобится тот конкретный ключ назад по некоторым причинам в той точке, необходимо было бы действительно удалить его, затем воссоздать записи (на, восстанавливают его после удаления и изменяют запись).
Существуют также юридические вопросы так или иначе, если персональные данные включены. Я думаю, что это значительно зависит от того, где Вы (или где база данных), и каковы условия использования.
В некоторых случаях люди могут попросить быть удаленными из Вашей системы, в этом случае твердое удаляет, необходим (или по крайней мере убирающий все персональные данные).
я согласовал бы с Вашим юридическим департаментом перед принятием стратегии так или иначе, если персональные данные включены.
Я отмечаю их, как удалено и действительно не удаляю. Однако время от времени я уношу вдаль весь спам и архивирую его, таким образом, он не уничтожает производительность.
Если Вы обеспокоены "бездействующими" записями, замедляющими Ваш доступ к базе данных, можно хотеть переместить те строки в другую таблицу, действующую как таблица "архива".
Для user-entered/managed данных я использовал метод флага, который Вы описываете и, учитывая пользователя "пустой мусор" интерфейс для фактического удаления объектов, если они принимают решение.