W przypadku dużych wkładek wykonałem fantazyjne (i być może zbyt przelotne) układy. Kilka przykładów:
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)
To działa, jeśli jesteś cholernie pewien, że przyzwyczajenie kiedykolwiek być wstawienie kolumny lub innego modyfikowania co jest włożona. Zyskuje wszystko na jednym ekranie i sprawia, że dość łatwo jest określić, jaka wartość trafia do której kolumny.
Jeśli wstawione wartości mogą zmieniać lub są złożone (takie jak sprawozdania przypadku), mam następujące (Wysunięcie wszystkich ale co piątej pozycji):
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
)
(Po dodaniu tego oświadczenia przypadku I " zliczono wcięcia ", aby upewnić się, że wszystko jest odpowiednio ustawione.)
Przygotowanie do poprawnej pracy wymaga nieco wysiłku, ale może uprościć konserwację, obsługę i późniejsze modyfikacje.
Jest to jedna z prawdziwych irytacji SQL.I to powoduje błędy, ponieważ łatwo jest zmienić zamówienie przez przypadek i jeśli typy danych są kompatybilne, nagle wpisujesz numer telefonu w kolumnie email bez żadnych błędów. – HLGEM
Ja też naprawdę chciałbym, żeby SQL zapewnił sposób na zrobienie tego. Poprawiłoby to znacznie czytelność. –