2010-09-13 14 views
7

¿Podemos usar alias con insertar en la sintaxis?¿Puedo usar alias en una instrucción INSERT?

Ninguno de los siguientes trabajos:

INSERT INTO tableblabla AS bla 
INSERT INTO bla tableblabla 
INSERT INTO tableblabla bla 

Me parece que no puede encontrar ninguna información sobre esto; ¿Hay alguna forma válida de usar alias en una instrucción INSERT?

Acerca de las posibles razones: http://bugs.mysql.com/bug.php?id=3275

+4

¿Por qué lo necesitas? –

+0

¿Qué SQL estás tratando de usar? –

+0

@Meakins - sabor mysql. @pekka: He editado mi pregunta original. – MEM

Respuesta

5

El INSERT syntax no permite para los alias. ¿Por qué necesitarías uno en una declaración INSERT de todos modos? Solo puede INSERT en una tabla a la vez.

+9

+1: La única razón por la que puedo ver la necesidad de un alias es si en una subconsulta correlacionada ... –

+0

Me preguntaba si tiene sentido porque, entiendo que no conozco todas las posibilidades de mysql para las consultas, entonces, y dado que aprendí que es una buena práctica usar alias para entender mejor qué estamos usando ... pensé que esto sería pertinente. Aún así, la parte de respuesta: "La sintaxis de inserción no permite alias" era todo lo que necesitaba saber por el momento. ;) Por razones, o probablemente razones, vea mi edición de preguntas el día de hoy. Muchas gracias. :) – MEM

+2

Conveniencia, flexibilidad y consistencia en la sintaxis. – Preston

12

Tener la capacidad de usar alias de tabla en INSERT sería muy útil para las instrucciones ON DUPLICATE KEY, especialmente al realizar comprobaciones en las columnas. Aquí está un ejemplo:

insert into very_long_table_name_that_can_be_modified_one_day_or_during_testing (
    mykey, 
    column1, 
    column2, 
    column3, 
    <column99> 
) 
select 
    mykey, 
    column1, 
    column2, 
    column3, 
    <column99> 
from subquery 
on duplicate key update 
    column1 = ifnull(values(column1), very_long_table_name_that_can_be_modified_one_day_or_during_testing.column1), 
    column2 = ifnull(values(column2), very_long_table_name_that_can_be_modified_one_day_or_during_testing.column2), 
    column3 = ifnull(values(column3), very_long_table_name_that_can_be_modified_one_day_or_during_testing.column3), 
    <column99>; 

Si el cambio de nombre de la tabla que tendrá que modificar un montón de línea de códigos en comparación con sólo tener un alias al principio que se utiliza en la consulta.

+2

Esto debería ser un comentario. Pero, de todos modos, votó a favor, ya que es muy importante – th3an0maly

Cuestiones relacionadas