2015-01-24 2 views
0

То, что я в настоящее время это:SQL заменить на только первые два столбца в строке

PreparedStatement ps = getSQLConnection().prepareStatement(
    "REPLACE INTO " + table + " (uuid,name) VALUES(?,?)" 
    ); 

ps.setString(1, uuid.toString()); 
ps.setString(2, name.toLowerCase()); 
ps.executeUpdate(); 

Однако это не только установка индекса 1 и 2, но вместо этого очищает другие значения столбцов. Как я могу вставить в строку только с первыми двумя индексами и оставить остальные значения нетронутыми?

таблица создается с этим утверждением:

"CREATE TABLE IF NOT EXISTS data (" + 
"`uuid` varchar(36) NOT NULL," + 
"`name` varchar," + 
"`owner` varchar," + 
"`tags` varchar," + 
"PRIMARY KEY (`uuid`));" 
+0

Что такое тип столбца uuid в таблице? –

ответ

2

От the documentation:

REPLACE является расширением MySQL к стандарту SQL. Он либо вставляет, либо удаляет и вставляет. Для другого расширения MySQL для стандартного SQL, которое либо вставляет, либо обновляет - см. Раздел 13.2.5.3, «ВСТАВИТЬ ... НА ПОДКЛЮЧЕНИЕ КЛЮЧЕВЫХ ОБНОВЛЕНИЙ Синтаксис».