Это вообще возможно?
Мой пример использования - таблица бухгалтерской книги, с требованием, чтобы после создания записи она была доступна только для чтения, то есть никто не мог ее редактировать или удалять. Это относится только к таблице бухгалтерской книги и таблицам, имеющим к ней прямое отношение - в той же схеме есть другие таблицы, которые будут обновляться / удаляться как обычно.
Насколько я понимаю, для целей целостности данных такого рода ограничения должны применяться на уровне базы данных, но я не могу найти чистый, общепринятый способ сделать это - это тот случай использования, в котором я бы лучше это делал на прикладном уровне?
Идеальным было бы найти способ сделать это простым SQL, чтобы не зависеть от того, какая платформа БД используется, поскольку это может быть изменено, но я понимаю, что это может быть слишком много, чтобы просить, поэтому, если у него есть чтобы зависеть от платформы, предпочтение отдается некоторой разновидности MySQL.
Спасибо!
источник
Разрешения кажутся очевидным выбором - однако вы также можете использовать ARCHIVE Storage Engine . Этот механизм таблиц предназначен для записи больших объемов данных, которые не изменятся:
Разница в разрешениях заключается в том, что кто-то с расширенными привилегиями все еще сможет изменять данные в большинстве других типов таблиц, тогда как ARCHIVE не позволяет никому изменять данные, которые уже находятся в таблице.
источник
REPLACE
это своего родаUPDATE
! «REPLACE работает точно так же, как INSERT, за исключением того, что если старая строка в таблице имеет то же значение, что и новая строка для PRIMARY KEY или индекса UNIQUE, старая строка удаляется перед вставкой новой строки. См. Раздел 13.2.5 , «ВСТАВИТЬ Синтаксис». "Посмотрите на « Архитектура точки во времени » или « Архитектура временной базы данных »
Проектирование базы данных: архитектура на момент времени
Временная база данных
Основная идея обоих заключается в том, что вам нужно либо добавлять данные, не удаляя, либо хранить данные таким образом, чтобы вы могли извлекать данные, как они существуют в настоящее время ... или существовали в предыдущую дату.
связанный вопрос здесь: как создать точку архитектуры времени в MySQL ,
источник