Помогите с триггерами mysql?

Segey
На сайте с 23.08.2005
Offline
404
767

Есть в общим такая задача:

1. Таблица tbl1, tbl2, ... tblx

2. В них колонка lock (int)

Для некоторых записей колонка может принимать разные значения, в самих таблицах контент. Т.е. контент иногда блокируется, а в БД идут запросы типа

SELECT * FROM tbl1 WHERE cat = 1 LIMIT X,Y 

И еще всякие разные, я хочу заблокировать контент т.е. поставить lock = 1, например, и запись не должна выводится в запросе для определенного пользователя mysql, т.е. запрос то что выше для примера должен так проходить, якобы записи вообще нет, то есть все это ради того чтобы избавится от:

WHERE lock = 0

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

Brexit - уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
[Удален]
#1

А опишите пожалуйста какую задачу в итоге вы хотите решить, я к ему это, просто желательно обходится без тригеров, в хайлоде не поощрается.

Segey
На сайте с 23.08.2005
Offline
404
#2

donriga,

Временно заблокировать часть записей (в нескольких таблицах), записи отличаются от остальных одной колонкой со значением = 1.

Нужно, чтобы mysql пользователь в своих запросах не мог делать для них SELECT, пока я не верну значение колонки <> 1

[Удален]
#3

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

Segey
На сайте с 23.08.2005
Offline
404
#4

donriga,

view это что? В смысле ф-ю в php или где?

Мне просто хочется время сэкономить и не следить за этим в коде, а обойтись как-нибудь процедурой и "включать"/"выключать" их

[umka]
На сайте с 25.05.2008
Offline
456
#5

Триггеры в базе данных — это разновидность хранимых процедур.

Конкретно в вашем случае нужно просто переделать запросы и добавить в них необходимое условие.

Лог в помощь!
Segey
На сайте с 23.08.2005
Offline
404
#6

[umka],

Черт, а я то надеялся :( В принципе условие я как понял наступает после выполнения запроса.... А вообще есть подобное в mysql? Или других СБД? Т.е. получается мне нужно поменять запрос "на лету", если выпоняется условие и добавить условие, чтобы не править запросы

IL
На сайте с 20.04.2007
Offline
435
#7

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

http://dev.mysql.com/doc/refman/5.6/en/create-view.html

+ есть особенности http://www.mysqlperformanceblog.com/2007/08/12/mysql-view-as-performance-troublemaker/ (хотя, на малом количестве данных тормоза не критичные)

Segey:
Мне просто хочется время сэкономить и не следить за этим в коде, а обойтись как-нибудь процедурой и "включать"/"выключать" их

Сэкономишь сейчас - заплатишь потом.. с процентами. Даже термин существует Технический долг.

А включать/выключать можно и в коде (настройка в конфиге /в файле/базе/ где он там хранится + проверка.. если настройка включена - формировать запрос с учётом доп. условия)

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
Segey
На сайте с 23.08.2005
Offline
404
#8
ivan-lev:
+ есть особенности http://www.mysqlperformanceblog.com/...-troublemaker/ (хотя, на малом количестве данных тормоза не критичные)

Понятно, спасибо, значит можно забыть про эти дела с вьюшкой точно

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий