Para inserciones grandes, he hecho diseños extravagantes (y tal vez demasiado exigentes). Algunos ejemplos:
INSERT MyTable (MyTableId, Name, Description, SomeStringData1
,SomeStringData2, SomeStringData3, SomeStringData4, MoreStringData1
,MoreStringData2, MoreStringData3, MoreStringData4, SomeNumericData1
,SomeNumericData2, SomeNumericData3, SomeNumericData4, MoreNumericData1
,MoreNumericData2, MoreNumericData3, MoreNumericData4, BigBlobAA
,BigBlobBB, EnteredAtDate, UpdatedAtDate, RevisedAtDate
,NeedAnotherDate)
values
(@MyTableId, @Name, @Description, @SomeStringData1
,@SomeStringData2, @SomeStringData3, @SomeStringData4, @MoreStringData1
,@MoreStringData2, @MoreStringData3, @MoreStringData4, @SomeNumericData1
,@SomeNumericData2, @SomeNumericData3, @SomeNumericData4, @MoreNumericData1
,@MoreNumericData2, @MoreNumericData3, @MoreNumericData4, @BigBlobAA
,@BigBlobBB, @EnteredAtDate, @UpdatedAtDate, @RevisedAtDate
,@NeedAnotherDate)
Esto funciona si usted es bastante maldito seguro de que usted no será nunca la inserción de columnas o de otra manera modificar lo que se inserta. Obtiene todo en una pantalla, y hace que sea bastante simple elegir qué valor va en cada columna.
Si los valores introducidos son propensos a cambiar o son complejos (tales como declaraciones de casos), hago lo siguiente (outdent todo pero cada quinto punto):
INSERT MyTable
(
MyTableId
,Name
,Description
,SomeStringData1
,SomeStringData2
,SomeStringData3
,SomeStringData4
,MoreStringData1
,MoreStringData2
,MoreStringData3
,MoreStringData4
,SomeNumericData1
,SomeNumericData2
,SomeNumericData3
,SomeNumericData4
,MoreNumericData1
,MoreNumericData2
,MoreNumericData3
,MoreNumericData4
,BigBlobAA
,BigBlobBB
,EnteredAtDate
,UpdatedAtDate
,RevisedAtDate
,NeedAnotherDate
)
values
(
MyTableId
,Name
,Description
,SomeStringData1
,SomeStringData2
,SomeStringData3
,SomeStringData4
,MoreStringData1
,MoreStringData2
,MoreStringData3
,MoreStringData4
,case
when something then 'A'
when orOther then 'B'
else 'Z'
end
,SomeNumericData2
,SomeNumericData3
,SomeNumericData4
,MoreNumericData1
,MoreNumericData2
,MoreNumericData3
,MoreNumericData4
,BigBlobAA
,BigBlobBB
,EnteredAtDate
,UpdatedAtDate
,RevisedAtDate
,NeedAnotherDate
)
(Después de añadir que la declaración CASE, I " contó con sangrías "para asegurarse de que tenía todo alineado correctamente.)
Se necesita un poco de esfuerzo para distribuir las cosas correctamente, pero puede simplificar el mantenimiento, el soporte y la posterior modificación.
Esta es una de las verdaderas molestias de SQL.Y causa errores, ya que es fácil hacer que la orden se modifique por accidente y si los tipos de datos son compatibles, de repente está colocando el número de teléfono en la columna de correo electrónico sin errores. – HLGEM
Yo también realmente desearía que SQL proporcionara una manera de hacer esto. Mejoraría la legibilidad dramáticamente. –