Можно ли использовать «где не существует» с хранимыми процедурами ...? - PullRequest
1 голос
/ 16 января 2020
SELECT id INTO @s
        FROM s_menu where name='STUDENTS' LIMIT 1; 
INSERT INTO s_menu (name, mslno, parentid,url,roles) 
    VALUES (studentname, studentmslno, @s,'studentsblank.php',('All,sysadmin,notview'))
     WHERE NOT EXISTS (SELECT * FROM s_menu WHERE url='studentsblank.php');

Ответы [ 2 ]

0 голосов
/ 16 января 2020

Вы не можете использовать WHERE в INSERT, если только он не является частью запроса SELECT.

INSERT INTO s_menu (name, mslno, parentid,url,roles) 
SELECT studentname, studentmslno, @s,'studentsblank.php',('All,sysadmin,notview')
FROM DUAL
WHERE NOT EXISTS (SELECT * FROM s_menu WHERE url='studentsblank.php');
0 голосов
/ 16 января 2020

Вы можете попробовать преобразовать вашу вставку в INSERT INTO ... SELECT:

INSERT INTO s_menu (name, mslno, parentid, url, roles)
SELECT studentname, studentmslno, @s, 'studentsblank.php', 'All,sysadmin,notview'
FROM s_menu
WHERE NOT EXISTS (SELECT * FROM s_menu WHERE url='studentsblank.php');

Здесь я предполагаю, что источник данных для столбцов studentname и studentmslno будет одинаковым s_menu таблица, которая появляется в предложении EXISTS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...