Schreiben Sie INSERT-Anweisungen mit Werten neben den Spaltennamen?
Beim schreiben einer INSERT-Anweisung mit einer Menge von Spalten, wäre es schön, um den Wert neben " name der Spalte, wie man in einer UPDATE-Anweisung. So etwas wie:
insert into myTable
set
[col1] = 'xxx',
[col2] = 'yyy',
[col3] = 42
etc...
Gibt es irgendwelche tricks, um imitieren das?
Ich dachte, ich war auf etwas mit diesem:
insert into myTable
select
[col1] = 'xxx',
[col2] = 'yyy',
[col3] = 42
etc...
Aber die Aliase sind nicht wirklich im Zusammenhang mit der Tabelle einfügen Spalten-und wenn jemand Hinzugefügt eine neue Spalte in der Tabelle, könnte es wirklich Schraube Dinge. Hat jemand noch andere Ideen, wie man dies tun könnte?
- Dies ist einer der wahren ärgernisse von SQL. Und es führt zu Fehlern, wie es ist leicht zu Holen Sie sich die Reihenfolge geändert von Unfall-und, wenn die Datentypen kompatibel sind, sind Sie plötzlich putting Sie die Telefonnummer in der E-Mail-Spalte mit keine Fehler.
- Auch ich wünschte wirklich, dass SQL eine Möglichkeit, dies zu tun. Es würde die Lesbarkeit erheblich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die nächste bekommen Sie wäre zu geben die Spalten auf einfügen (dies schützt Sie vor Ihre Besorgnis über eine neue Spalte Hinzugefügt wurde) und alias-Werte wählen (das gibt Ihnen einen Grad der selbst-dokumentierenden code).
Für große Einsätze ist, habe ich Lust (und vielleicht überfliegen pingelig) layouts. Einige Beispiele:
Funktioniert dies, wenn Sie sich verdammt sicher, dass Sie nicht immer werden einfügen von Spalten oder anderweitig zu ändern, was eingefügt wird. Es bekommt alles bekommt, was auf einem Bildschirm, und macht es relativ einfach zu wählen Sie aus, welcher Wert geht in die Spalte.
Wenn eingefügten Werte sind wahrscheinlich zu ändern oder zu Komplex sind (wie case-Anweisungen), mache ich das folgende (Ausrücken alle, aber jeder fünfte Element):
(Nach dem hinzufügen, dass die CASE-Anweisung, die ich "gezählt abdrücken", um sicherzustellen, ich hatte alles richtig aufgestellt.)
Es dauert ein wenig Aufwand, um die Dinge verzögerten sich richtig, aber es kann die Wartung -, support -, und nachträgliche änderungen einfacher.
Im Grunde nicht. Die syntax für SQL-INSERT ist die Liste aller Spalten, dann alle Werte. Auch wenn Sie finden konnte, ein trick, um express die syntax, wie Sie wollen, es wäre nicht tragbar und verwirrend, um die nächste person zu haben zu erhalten Ihren code.
Wenn Sie möchten, eine visuelle Zuordnung der Spalten, die Werte mit etwas entlang der Linien von Philip ' s Antwort oben. Aber bitte nicht verbringen alle Ihre wertvolle Zeit, um Ihren code zu vermeiden, der standard-syntax.
Sobald Sie einfügen möchten, um mehrere Zeilen gleichzeitig, entweder 2008 Stil Zeile Konstruktoren oder mit der älteren
union all
syntax, neigen Sie dazu, dankbar zu sein, dass Sie nicht angeben, die Spaltennamen für jede Zeile.2008 Zeile Konstruktoren:
UNION alle:
Die schnelle Lösung, die ich kam, war die folgende: