SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.10.2012 16:27:27

nekulin
Завсегдатай
Зарегистрирован: 06.04.2012
Сообщений: 56

не удалять а помечать как удаленные

Всем привет! Возникла ситуация не удалять ничего а помечать как удаленные. Собственно вопрос как это можно сделать с помощью триггеров, чтоб он помечал is_delete=1 и не удалял при DELETE
И вопрос можно ли чтоб он не учитывался при SELECT UPDATE это глупость и сказа конечно. Но это решило бы все проблемы.

Отредактированно nekulin (10.10.2012 16:30:44)

Неактивен

 

#2 10.10.2012 16:49:04

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: не удалять а помечать как удаленные

nekulin написал:

Всем привет! Возникла ситуация не удалять ничего а помечать как удаленные. Собственно вопрос как это можно сделать с помощью триггеров, чтоб он помечал is_delete=1 и не удалял при DELETE

А почему не сделать update вместо delete?

nekulin написал:

И вопрос можно ли чтоб он не учитывался при SELECT UPDATE это глупость и сказа конечно. Но это решило бы все проблемы.

Не понял смысл предложения.

Неактивен

 

#3 10.10.2012 17:07:56

nekulin
Завсегдатай
Зарегистрирован: 06.04.2012
Сообщений: 56

Re: не удалять а помечать как удаленные

vasya написал:

nekulin написал:

Всем привет! Возникла ситуация не удалять ничего а помечать как удаленные. Собственно вопрос как это можно сделать с помощью триггеров, чтоб он помечал is_delete=1 и не удалял при DELETE

А почему не сделать update вместо delete?


Потому что придется переделывать много функционала

nekulin написал:

И вопрос можно ли чтоб он не учитывался при SELECT UPDATE это глупость и сказа конечно. Но это решило бы все проблемы.

Не понял смысл предложения.

Это глупый вопрос, но все же.
если мы  у  записи  указали is_delete=1 то он не должен ее выдавать в результате при select and update

Неактивен

 

#4 10.10.2012 23:31:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: не удалять а помечать как удаленные

nekulin написал:

Потому что придется переделывать много функционала

А придется.
Можно попробовать извратиться:
тригерр before delete добавляет/изменяет данные во второй таблице, после чего вылетает с ошибкой (signal), т.о. отменяя удаление.
во второй таблице триггер изменяет данные в первой (is_delete=1)

Но это вариант - гланды через задницу.


nekulin написал:

Это глупый вопрос, но все же.
если мы  у  записи  указали is_delete=1 то он не должен ее выдавать в результате при select and update

select ... where is_delete=0;
Или, если не хотите переделывать функционал, то можно попробовать через view, но там есть масса ограничений.

Неактивен

 

#5 10.10.2012 23:36:21

nekulin
Завсегдатай
Зарегистрирован: 06.04.2012
Сообщений: 56

Re: не удалять а помечать как удаленные

vasya написал:

nekulin написал:

Потому что придется переделывать много функционала

А придется.
Можно попробовать извратиться:
тригерр before delete добавляет/изменяет данные во второй таблице, после чего вылетает с ошибкой (signal), т.о. отменяя удаление.
во второй таблице триггер изменяет данные в первой (is_delete=1)

Но это вариант - гланды через задницу.

Спасибо, придеться править код (

nekulin написал:

Это глупый вопрос, но все же.
если мы  у  записи  указали is_delete=1 то он не должен ее выдавать в результате при select and update

select ... where is_delete=0;
Или, если не хотите переделывать функционал, то можно попробовать через view, но там есть масса ограничений.

Вьюшка не дело.
select ... where is_delete=0; Это понятно что через where smile Я имел виду просто select без явного указания where is_delete=0/ В чем смысл, чтоб не лезсть в код и недополнять условием дополнительным.

Неактивен

 

#6 10.10.2012 23:48:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: не удалять а помечать как удаленные

Вы можете сделать триггер before delete, который будет переносить удаляемую строку во вторую таблицу. Т.е. будет две таблицы - с актуальными записями и с удаленными. И никаких изменений в код вносить не нужно.

Неактивен

 

#7 11.10.2012 00:01:29

nekulin
Завсегдатай
Зарегистрирован: 06.04.2012
Сообщений: 56

Re: не удалять а помечать как удаленные

vasya написал:

Вы можете сделать триггер before delete, который будет переносить удаляемую строку во вторую таблицу. Т.е. будет две таблицы - с актуальными записями и с удаленными. И никаких изменений в код вносить не нужно.

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

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson