Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: MySql break

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
dubasua
Отправлено: 22 Февраля, 2013 - 21:36:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


Помог: 7 раз(а)




Доброго времени суток.
Как в триггере (Mysql) остановить sql запрос. Что бы не оборачивать тело триггера в IF ... THEN после каждой проверки, а наоборот остановить sql запрос. Наример
CODE (SQL):
скопировать код в буфер обмена
  1. IF @var = 0 THEN
  2.    "break"# остановить выполнение тригера и прервать sql запрос
  3. END IF;
  4. # полезный код
  5.  
 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Февраля, 2013 - 21:38:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А если от обратного?
CODE (SQL):
скопировать код в буфер обмена
  1. IF @var != 0 THEN
  2.   # полезный код
  3. END IF;
 
 Top
dubasua
Отправлено: 22 Февраля, 2013 - 21:43:30
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


Помог: 7 раз(а)




Тогда получится примерно вот такое
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. IF @var != 0 THEN
  3.    IF @var != 0 THEN
  4.       IF @var != 0 THEN
  5.           IF @var != 0 THEN
  6.                IF @var != 0 THEN
  7.                    IF @var != 0 THEN
  8.                        
  9.                         # полезный код
  10.                        
  11.                    END IF;
  12.                END IF;
  13.            END IF;
  14.        END IF;
  15.     END IF;
  16. END IF;
  17.  

(Добавление)
Я предпочитаю ошибки выносить наперед, и останавливать процесс.
(Добавление)
Нашел.
CODE (SQL):
скопировать код в буфер обмена
  1. IF @var = 0 THEN
  2.    SIGNAL SQLSTATE '02345';
  3. END IF;

Главное что бы SQLSTATE начинался с 02, иначе не поймет, также понимает еще 00 и 01, но это ошибки будут типа warninig, и скрипт будет продолжать работу. Также можно декларировать переменную MESSAGE_TEXT, и заносить туда сообщение об ошибке.
 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Февраля, 2013 - 22:31:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




dubasua пишет:
IF @var != 0 THEN
IF @var != 0 THEN
IF @var != 0 THEN
IF @var != 0 THEN
IF @var != 0 THEN
IF @var != 0 THEN
А это одна и та же переменная или так к примеру ткнули?
 
 Top
dubasua
Отправлено: 22 Февраля, 2013 - 22:38:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


Помог: 7 раз(а)




Так к примеру.
Во время выполнения триггера, идут обновления в нескольких таблицах, потом расчет, потом снова обновления и так несколько раз, и перед каждыми обновами нужно много значений проверять, проще бы было модуль на пхп сваять, но нет, хотят триггер.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB