2015-08-26 3 views
0

Я использую MySQL Workbench (6.3), и я пытаюсь создать хранимую процедуру с определенным «INSERT IF NOT EXSISTS», но я думаю, т хорошо. Кстати, я прочитал эту тему http://bogdan.org.ua/2007/10/18/mysql-insert-if-not-exists-syntax.html и попробовал оба примера, это не сработало. Вот заявление:«INSERT IF NOT EXISTS», ELSE UPDATE некоторые столбцы в MySQL

CREATE DEFINER=`test`@`localhost` PROCEDURE `onPlayerJoin`(
    IN uuid CHAR(36), 
    IN nickname CHAR(16), 
    IN firstConnection TIMESTAMP, 
    IN lastConnection TIMESTAMP 
) 

BEGIN 
    INSERT IGNORE INTO `test`.`player` (`playerUuid`, `playerNickname`, `playerFirstConnection`, `playerLastConnection`) 
     VALUES (uuid, nickname, firstConnection, lastConnection); 
     UPDATE `test`.`player` SET 
     `playerNickname` = nickname, 
     `playerLastConnection` = lastConnection 
     WHERE `playerUuid` = uuid; 
END 

ЕСЛИ ПК не найден, ВСТАВЬТЕ его. ELSE, ОБНОВЛЕНИЕ некоторых столбцов. (что я могу указать) Однако кажется, что он обновляет каждый столбец, который я хотел бы ограничить определенными столбцами. Вот моя процедура: http://pastebin.com/NfcdU9Rb!

Дополнительный вопрос: безопасен ли он?

+0

SQL-инъекции может возникнуть только из кода приложения, обращающегося код SQL. Таким образом, в контексте вашего вопроса только о MySQL, вопрос «Является ли он безопасным для инъекций?» не может быть дан ответ. – Russ

+0

Благодарим вас за ответ @Russ и ваше редактирование! –

ответ

0

Использование INSERT ... ON KEY UPDATE DUPLICATE Синтаксис

INSERT INTO table (a,b,c) VALUES (1,2,3) 
    ON DUPLICATE KEY UPDATE c=c+1; 

Пожалуйста, обратитесь по ссылке для получения более подробной: http://dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate.html

+0

Я попытался изменить текущую процедуру, вот она: http://pastebin.com/AiKn7jQg Однако столбец firstConnection также обновлен, и я не понимаю, почему. –

+0

@MajorSquirrel: работает нормально. Пожалуйста, проверьте предоставленную ссылку http://sqlfiddle.com/#!9/e6181/1 – seahawk

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