powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборга перед апдейтом в процедуре
2 сообщений из 2, страница 1 из 1
Выборга перед апдейтом в процедуре
    #38582253
chiffacff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день. Есть таблица users и users_jn, на таблицу users навешан тригер, который при апдейте вставляет данные в users_jn. Далее есть следующая процедура:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
BEGIN

DECLARE my_tel VARCHAR(3);
DECLARE friend_tell VARCHAR(3);

DECLARE my_tel_old VARCHAR(3);
DECLARE friend_tell_old VARCHAR(3);

DECLARE var_tel VARCHAR(3);
DECLARE var_frd_tell VARCHAR(3);

SET @my_tel_old = tel_num_ins;
SET @friend_tell_old = friend_tel_ins;


IF( SELECT count( * ) 
FROM users as tkeml
WHERE tkeml.login != login_ins and tkeml.email = email_ins) !=0
 THEN
      SELECT 'email_in_base_ed';
ELSEIF (SELECT count( * ) 
     FROM users_jn
 WHERE users_jn.time_upd >= CURDATE() and users_jn.login LIKE login_ins) !=0
THEN
      SELECT 'wait_day_end';
ELSEIF (SELECT count( * ) 
FROM users as tktel
WHERE tktel.login != login_ins and tktel.tel_num = tel_num_ins) !=0
 THEN
      SELECT 'tel_in_base_ed';
ELSE


 IF pass_ins !=''
 THEN 
UPDATE users as a SET a.name = name_ins, a.surname = surname_ins, a.tel_num = tel_num_ins, a.pass=pass_ins WHERE a.login = login_ins and a.pass = pass_old_ins;
 ELSE
UPDATE users as a SET a.name = name_ins, a.surname = surname_ins, a.tel_num = tel_num_ins  WHERE a.login = login_ins and a.pass = pass_old_ins;
 END IF;


SELECT tel_num INTO @my_tel FROM users_jn WHERE login = login_ins GROUP BY time_upd DESC LIMIT 0, 1;
SELECT friend_tel INTO @friend_tell FROM users_jn WHERE login = login_ins GROUP BY time_upd DESC LIMIT 0, 1;

IF @my_tel = @my_tel_old THEN
  SET var_tel = 'NO';
ELSE 
  SET var_tel = 'YES';
END IF;


IF @friend_tell = @friend_tell_old THEN
  SET var_frd_tell = 'NO';
ELSE 
  SET var_frd_tell = 'YES';
END IF;


SELECT concat(var_tel,'||',var_frd_tell) as RESULT; 

END IF;
        
END




которая делает определенные проверки и апдейтит табличку юзерс. Одна из строк провертки есть:

Код: plsql
1.
2.
3.
4.
5.
ELSEIF (SELECT count( * ) 
     FROM users_jn
 WHERE users_jn.time_upd >= CURDATE() and users_jn.login LIKE login_ins) !=0
THEN
      SELECT 'wait_day_end';



То есть проверяет что бы обновление не шло чаще чем раз в сутки.

дальше делаю так:
Код: plsql
1.
2.
3.
SELECT count(*)
     FROM users_jn as  usjn
 WHERE usjn.time_upd >= CURDATE() and usjn.login LIKE 'ppp'



вернуло 0


Код: plsql
1.
CALL `UserEdit` ('ppp' , 'ppp' , '0501234569', '202cb962ac59075b964b07152d234b70');



возвращает wait_day_end и

Код: plsql
1.
2.
3.
SELECT count(*)
     FROM users_jn as  usjn
 WHERE usjn.time_upd >= CURDATE() and usjn.login LIKE 'ppp'



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

Подскажите, где косяк в коде?... возможно замылился глаз уже не вижу.... Заранее всем спасибо!
...
Рейтинг: 0 / 0
Выборга перед апдейтом в процедуре
    #38582673
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiffacff, зачем наворачивать if+elseif? Читабельность же нулевая. Используйте leave (пример тут ).
Т.е. код будет такой:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
label1:begin
if проверка1_провалена then
 вывести предупреждение1;
 leave label1;
end if;
<...>
if проверкаN_провалена then
 вывести предупреждениеN;
 leave label1;
end if;

а дальше уже все эти селекты и апдейты

end;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборга перед апдейтом в процедуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]