2011-08-09 9 views
5

¿hay alguna manera de hacer un INSERT pero en DUPLICATE KEY en lugar de una actualización, hacer un SELECT?¿Hay MySQL ... INSERTAR ... EN SELECCIÓN DE LLAVE DUPLICADA?

+0

¿Cuál es exactamente su caso de uso para esa? –

+0

... ¿Por qué? Hay 'ACTUALIZACIÓN DE LLAVE DUPLICADA' por una buena razón; si falla un inserto, una actualización tiene sentido. Una selección, por otro lado, no lo haría, y el código que hace una inserción no esperaría un resultado retrocedido. – cHao

+4

@cHao: por ejemplo, cuando quiera usar la identificación de la fila insertada/existente, querrá que la declaración devuelva un valor. – Seffix

Respuesta

2

No en una consulta, pero puede ejecutar INSERT IGNORE <xxx> y luego SELECT <xxx>. El IGNORE lo hace ignorar cualquier fila que activaría errores clave duplicados en lugar de detenerse.

0

No. Deberá observar el error duplicado de la clave y luego emitir su consulta SELECT.

Sería bastante problemático si existiera ya que las consultas INSERT y UPDATE están destinadas a modificar los datos y SELECT para devolver un conjunto de resultados. Todos los tipos de controladores/interfaces manejan estos casos de manera diferente por una buena razón.

Cuestiones relacionadas