sql - trigger - INSERT vs INSERT INTO
triggers insert sql (9)
He estado trabajando con T-SQL en MS SQL desde hace un tiempo y, de alguna manera, cada vez que tengo que insertar datos en una tabla tiendo a usar la sintaxis:
INSERT INTO myTable <something here>
Entiendo que la palabra clave INTO
es opcional aquí y no tengo que usarla, pero de alguna manera se convirtió en hábito en mi caso.
Mi pregunta es:
- ¿Hay alguna implicación de usar la sintaxis
INSERT INTO
versusINSERT INTO
? - ¿Cuál cumple completamente con el estándar?
- ¿Son ambos válidos en otras implementaciones de SQL estándar?
Ambos hacen la misma cosa. INTO es opcional (en T-SQL de SQL Server) pero ayuda a la legibilidad.
Empecé a wtitar SQL en ORACLE, así que cuando veo el código sin INTO simplemente parece ''roto'' y confuso.
Sí, es solo mi opinión, y no digo que siempre deba usar INTO. Pero no deberías saber que muchas otras personas pensarán lo mismo, especialmente si no han comenzado a crear scripts con implementaciones más nuevas.
Con SQL, creo que también es muy importante darse cuenta de que está agregando una FILA a una TABLA, y no trabajando con objetos. Creo que no sería útil para un desarrollador nuevo pensar en las filas / entradas de la tabla SQL como objetos. De nuevo, solo mi opinión.
En SQL Server 2005, podría tener algo entre INSERT y INTO así:
INSERT top(5) INTO tTable1 SELECT * FROM tTable2;
Aunque funciona sin INTO, prefiero utilizar INTO para facilitar la lectura.
Prefiero usarlo Mantiene la misma sensación de delineación de sintaxis y legibilidad que otras partes del lenguaje SQL, como el group BY
, order BY
.
Puede ser opcional en mySQL, pero es obligatorio en algunos otros DBMS, por ejemplo Oracle. Por lo tanto, SQL será más potencialmente portátil con la palabra clave INTO, por lo que vale.
Si está disponible, use la función estándar. No es que alguna vez necesite portabilidad para su base de datos en particular, pero es probable que necesite portabilidad para su conocimiento de SQL. Un ejemplo particularmente desagradable de T-SQL es el uso de isnull, use coalesce!
Son lo mismo, INTO
es completamente opcional en T-SQL (otros dialectos SQL pueden diferir).
Contrariamente a las otras respuestas, creo que afecta la legibilidad para usar INTO
.
Creo que es una cuestión conceptual: en mi opinión, no estoy insertando una fila en una tabla llamada "Cliente", pero estoy insertando un Cliente . (Esto está relacionado con el hecho de que uso para nombrar mis tablas en singular, no en plural).
Si sigue el primer concepto, INSERT INTO Customer
probablemente "se sienta bien" para usted.
Si sigue el segundo concepto, lo más probable es que sea INSERT Customer
para usted.
Una lección que me incliné sobre este tema es que siempre debes mantenerlo constante. Si usa INSERT INTO, no use INSERT también. Si no lo haces, algunos programadores pueden hacer la misma pregunta nuevamente.
Aquí está mi otro caso de ejemplo relacionado: tuve la oportunidad de actualizar un procedimiento almacenado muy largo en MS SQL 2005. El problema es que se insertaron demasiados datos en una tabla de resultados. Tenía que averiguar de dónde provenían los datos. Traté de averiguar dónde se agregaron nuevos registros. En la sección inicial de SP, vi varios INSERT INTOs. Luego traté de encontrar "INSERT INTO" y actualizarlos, pero me perdí un lugar donde solo se utilizó "INSERT". ¡Ese realmente insertó 4k + filas de datos vacíos en algunas columnas! Por supuesto, debería buscar INSERT. Sin embargo, eso me pasó a mí. Culpo al programador anterior IDIOT :) :)
INSERT INTO
es el estándar. Aunque INTO
es opcional en la mayoría de las implementaciones, es necesario en algunas, por lo que es una buena idea incluirlo para garantizar que su código sea portátil.
here puede encontrar enlaces a varias versiones del estándar SQL. Encontré una versión HTML de un estándar anterior here .