Вставить или обновить в Sybase SQLAnywhere

Как я могу вставить строку в базу данных (Sybase SQL Anywhere 12.5) если он не существует, и обновить, если он существует?

Я пытаюсь следующее:

$stmt = $conn->prepare('INSERT INTO customer_info (user_id, fname, lname) VALUES(:user_id, :fname, :lname)
ON DUPLICATE KEY UPDATE fname= :fname2, lname= :lname2');

$stmt->bindParam(':user_id', $user_id);
$stmt->bindParam(':fname', $_POST['fname'], PDO::PARAM_STR);
$stmt->bindParam(':lname', $_POST['lname'], PDO::PARAM_STR);
$stmt->bindParam(':fname2', $_POST['fname'], PDO::PARAM_STR);
$stmt->bindParam(':lname2', $_POST['lname'], PDO::PARAM_STR);

Это дает следующее ошибка:

[Sybase] [Драйвер ODBC] [SQL Anywhere] Синтаксическая ошибка рядом с «ON» в строке 1

Это проблема совместимости?
Как я могу это сделать?

1

Решение

Вы должны прочитать в REPLACE INTO

пример синтаксиса для этого будет:

REPLACE INTO my_table (pk_id, col1) VALUES (5, '123');

Это автоматически идентифицирует первичный ключ и находит соответствующую строку для обновления, вставляя новую, если ничего не найдено.

0

Другие решения

добавлять ON EXISTING UPDATE к оператору вставки, например:

INSERT INTO customer_info (user_id,fname,lname) ON EXISTING UPDATE VALUES(Value1,Value2,Value3);
0

По вопросам рекламы [email protected]