Задать вопрос
@Valentine5

Как защитить данные от повреждения при INSERT?

Например, если какие-то строки смогут загрузиться, а какие-то - нет, то бд будет повреждена. Возможно, есть некая опция или функция, позволяющая в случае любой ошибки отменить внесение изменений...
  • Вопрос задан
  • 284 просмотра
Подписаться 3 Простой 8 комментариев
Решения вопроса 2
@alexalexes
если в Mysql какие-то строки смогут загрузиться, а какие-то - нет,

Не бывает тут вариативности, даже случайной.
Можете внести одну или несколько строк запросом insert (или несколькими insert-ами по одной строке, а может еще где-то update-ом или delete-ом пробежитесь). Но фиксация этих действий будет происходить, если после запросов на вставку/изменение/удаление явно будет отправлена команда commit или rollback (а может и не явно, см. что такое autocommit).
До поступления этих транзакционных команд ваши изменения будут копиться во временном буфере СУБД и будет блокировать объекты СУБД до того момента, пока не поступит транзакционная команда (или не наступит ситуация для autocommit). Для других пользователей СУБД изменения заблокированных объектов будет недоступно, только чтение той версии объекта, которая была до наложения блокировки (не всегда таков принцип, см. что такое уровни изоляции транзакций).
Ответ написан
Комментировать
@Akina
Сетевой и системный админ, SQL-программист.
Например, если какие-то строки смогут загрузиться, а какие-то - нет, то бд будет повреждена.

НЕТ.

Возможно рассогласование данных, нарушение внутренней логики системы - но никак не повреждение.

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

При отсутствии аппаратных ошибок, на чистой логике повреждение БД возможно либо из-за ошибочного/злонамеренного действия, либо из-за бага/сбоя программного обеспечения. В обоих случаях - как внутри SQL-сервера, так и снаружи (ОС, третий софт, ...).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Уровни безопасности:
1. Бизнес-логика - триггеры, ограничения
2. Операции обновления - транзакции
3. Хранение записей - репликация, RAID массивы, бэкапы
4. Загрузка - проверка файловой системы при старте ОС, фс с возможностью восстановления

Самый надежный способ
Использовать PostgreSQL
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы