Задавайте вопросы, мы ответим
Вы не зашли.
Всем привет! Возникла ситуация не удалять ничего а помечать как удаленные. Собственно вопрос как это можно сделать с помощью триггеров, чтоб он помечал is_delete=1 и не удалял при DELETE
И вопрос можно ли чтоб он не учитывался при SELECT UPDATE это глупость и сказа конечно. Но это решило бы все проблемы.
Отредактированно nekulin (10.10.2012 16:30:44)
Неактивен
nekulin написал:
Всем привет! Возникла ситуация не удалять ничего а помечать как удаленные. Собственно вопрос как это можно сделать с помощью триггеров, чтоб он помечал is_delete=1 и не удалял при DELETE
А почему не сделать update вместо delete?
nekulin написал:
И вопрос можно ли чтоб он не учитывался при SELECT UPDATE это глупость и сказа конечно. Но это решило бы все проблемы.
Не понял смысл предложения.
Неактивен
vasya написал:
nekulin написал:
Всем привет! Возникла ситуация не удалять ничего а помечать как удаленные. Собственно вопрос как это можно сделать с помощью триггеров, чтоб он помечал is_delete=1 и не удалял при DELETE
А почему не сделать update вместо delete?
Потому что придется переделывать много функционалаnekulin написал:
И вопрос можно ли чтоб он не учитывался при SELECT UPDATE это глупость и сказа конечно. Но это решило бы все проблемы.
Не понял смысл предложения.
Это глупый вопрос, но все же.
если мы у записи указали is_delete=1 то он не должен ее выдавать в результате при select and update
Неактивен
nekulin написал:
Потому что придется переделывать много функционала
А придется.
Можно попробовать извратиться:
тригерр before delete добавляет/изменяет данные во второй таблице, после чего вылетает с ошибкой (signal), т.о. отменяя удаление.
во второй таблице триггер изменяет данные в первой (is_delete=1)
Но это вариант - гланды через задницу.
nekulin написал:
Это глупый вопрос, но все же.
если мы у записи указали is_delete=1 то он не должен ее выдавать в результате при select and update
select ... where is_delete=0;
Или, если не хотите переделывать функционал, то можно попробовать через view, но там есть масса ограничений.
Неактивен
vasya написал:
nekulin написал:
Потому что придется переделывать много функционала
А придется.
Можно попробовать извратиться:
тригерр before delete добавляет/изменяет данные во второй таблице, после чего вылетает с ошибкой (signal), т.о. отменяя удаление.
во второй таблице триггер изменяет данные в первой (is_delete=1)
Но это вариант - гланды через задницу.
Спасибо, придеться править код (nekulin написал:
Это глупый вопрос, но все же.
если мы у записи указали is_delete=1 то он не должен ее выдавать в результате при select and updateselect ... where is_delete=0;
Или, если не хотите переделывать функционал, то можно попробовать через view, но там есть масса ограничений.
Вьюшка не дело.
select ... where is_delete=0; Это понятно что через where Я имел виду просто select без явного указания where is_delete=0/ В чем смысл, чтоб не лезсть в код и недополнять условием дополнительным.
Неактивен
Вы можете сделать триггер before delete, который будет переносить удаляемую строку во вторую таблицу. Т.е. будет две таблицы - с актуальными записями и с удаленными. И никаких изменений в код вносить не нужно.
Неактивен
vasya написал:
Вы можете сделать триггер before delete, который будет переносить удаляемую строку во вторую таблицу. Т.е. будет две таблицы - с актуальными записями и с удаленными. И никаких изменений в код вносить не нужно.
Да это как вариант, но правильно ли ? если за этой записью потяниться много данных которые нужно будет переносить ?
Неактивен