[MySQL] Помогите создать триггер.

DavyJohnes
На сайте с 05.01.2011
Offline
84
1046

Имеются две таблицы:

Table1:

id(int),

name(tinytext)

и др.

Table2

id(int)

stopword(tinytext)

Хочу создать триггер, который перед добавлением записи в Table1 Будет проверять новое значение поля Table1.`name` по следующему алгоритму.


Table1.name LIKE CONCAT('%',Table2.stopword,'%')

И в случае если данное сравнение окажется верным, то строка в таблицу не заноситься.

При этом в Table2 записей несколько и сравнение должно осуществиться с каждой из них.

https://handy-tools.io (https://handy-tools.io) - Набор полезных утилит для всех!
N
На сайте с 06.05.2007
Offline
419
#1

а какая именно помощь требуется? бери да создавай

Кнопка вызова админа ()
DavyJohnes
На сайте с 05.01.2011
Offline
84
#2
netwind:
а какая именно помощь требуется? бери да создавай

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

И плюс не понимаю если написать условие в той форме как у меня выше: сравнение произойдет с каждой строкой в таблице Table2?

texnicii
На сайте с 12.11.2009
Offline
77
#3

Если столько непонимания, уместно ли такую задачу решать с помощью триггера?

Улыбающийся подшипник на краю подводного плавания.
N
На сайте с 06.05.2007
Offline
419
#4
DavyJohnes:
Ну не могу понять как сделать так что бы запретить добавление новой строчки.

так бы сразу и спросил.

ответ : никак не запретить. поэтому принято генерировать ошибку http://forge.mysql.com/wiki/Triggers#Emulating_Check_Constraints

В mysql 5.5 с ошибками поинтереснее - есть операторы SIGNAL.

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

dkameleon
На сайте с 09.12.2005
Offline
386
#5
DavyJohnes:
Ну не могу понять как сделать так что бы запретить добавление новой строчки.

триггер не поддерживает такой возможности.

Решение - выполнять в триггере запрос, который достоверно пройдет с ошибкой.

опередили :)

Дизайн интерьера (http://balabukha.com/)

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