Триггер обновления статуса MySQL при удалении - PullRequest
0 голосов
/ 24 октября 2011

Я хочу узнать ваше мнение по этому вопросу.

Я использую базу данных MySQL для своих проектов, и почти в каждой таблице у меня есть столбец с именем Status определен (ENUM(«активный», «неактивный», «удаленный»)).

Я делаю это из соображений производительности, поэтому всякий раз, когда строка не требуется (удаляется), я устанавливаю ее как «удаленный» вместо фактического удаленияэто из БД.Это оказалось довольно хорошо.

Но теперь мне всегда приходится писать PHP-функции в моих проектах для обновления строки с Active на Deleted.

Как вы думаете, как я могу решить эту проблему?используя триггеры MySQL или другую технику?

Спасибо

Ответы [ 4 ]

1 голос
/ 24 октября 2011

Что плохого в обновлении строки, чтобы установить ее для удаления?

В конце концов,

UPDATE projects SET status = 'deleted' WHERE id = :id;

против

DELETE FROM projects WHERE id = :id;

не имеет большого значения или нет?

1 голос
/ 24 октября 2011

Я полагаю, что нет большой разницы между письменностью;

DELETE FROM table WHERE id = 1

или

UPDATE table SET status = 'deleted' WHERE id = 1

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

0 голосов
/ 24 октября 2011

Это зависит от того, чего вы пытаетесь достичь ..

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

Если вам нужно сохранить запись после того, как онаПосле удаления вы можете создать архивную таблицу, в которую вы записываете копию записи, когда удаляете ее из основной таблицы.Копия будет записана с помощью триггера при удалении.

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

0 голосов
/ 24 октября 2011

Вы всегда должны отправлять запрос из кода приложения в базу данных для реализации варианта использования приложения.Является ли это действительным оператором DELETE для строки или оператором UPDATE, который устанавливает статус «удален», на самом деле не имеет значения.Вы не можете обойти это с помощью какого-то триггера.

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