2015-12-17 4 views
1

Для MySQL, если я хранится идентификатор пользователя и маркер в user таблице и только позволяет вставить запись в другой таблице, если в комплект поставки Идент и маркер matches.I've пыталсяВСТАВИТЬ WHERE EXISTS

INSERT INTO product(description) 
VALUES('123') 
WHERE EXISTS 
    (SELECT 1 FROM users where userid='myuserid' AND token='ABCD') 

В следующий оператор SQL производит ошибку "проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с WHERE EXISTS (SELECT 1 FROM users, где userid = '29 ')'"

Однако для обновления я могу с успехом завершено

UPDATE product 
SET description='123' 
WHERE EXISTS 
    (SELECT 1 FROM users where userid='myuserid' AND token='ABCD') 

Может ли кто-нибудь из экспертов помочь вам посоветовать. Мне нужен самый эффективный способ проверить правильность токена пользователя перед выполнением вставки.

+0

Возможные дубликата [MySQL INSERT IF (если пользовательские заявления)] (http://stackoverflow.com/questions/6854996/mysql-insert-if-custom -if-statements) –

ответ

0

Пожалуйста, попробуйте использовать триггер вместо:

CREATE TRIGGER tokenValidator 
BEFORE INSERT 
ON product 
FOR EACH ROW BEGIN 
IF (SELECT 1 FROM users where userid='myuserid' AND token='ABCD') THEN 
    INSERT INTO product(description) VALUES('123') 
END IF 
+0

По-прежнему возникает ошибка. «проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с« IF (SELECT 1 FROM users, где userid = «29 ») THEN INSERT ...». Понимать, что оператор IF может использоваться только в хранимой процедуре – user1997296

+0

, см. Обновленный ответ –

Смежные вопросы