(обычный) INSERT
синтаксис выглядит следующим образом (без учета личного выбора разрывов строк / размещения в скобках):
INSERT INTO MyTable (
Col1,
Col2,
...
) VALUES (
@value1,
@value2
...
)
Поскольку связь между столбцом и значением основана на индексе в как бы два разных списка, это может стать громоздким, если у вас много столбцов. Если вам нужно что-то изменить, вы можете изменить неправильный столбец или рискнуть вставить значение для Col15
в Col16
и наоборот, потому что оба были совместимых типов и, следовательно, запрос выполняется без проблем.
Ранее я «обходил» это так:
INSERT INTO MyTable ( Col1, SomeCol2, Col3WithLongName, Col4, ...)
VALUES (@col1, @someCol2, @col3WithLongName, @col4, ...)
Это, конечно, имеет свои проблемы в том, что строки могут становиться очень длинными (и это не так). особенно интересно вручную выравнивать код).
В идеале я бы хотел UPDATE
-подобный синтаксис для INSERT
, который AFAIK невозможен, но выглядел бы примерно так:
INSERT INTO MyTable (
Col1 = @value1,
Col2 = @value2,
...
)
Здесь связь между столбцом и значением сразу очевидна. Я знаю, что в T- SQL часто есть несколько разных синтаксисов для одной и той же вещи, но я не нашел синтаксиса INSERT
с таким качеством (чистое сопоставление столбца / значения).
Есть ли INSERT
синтаксис, который имеет это качество, по крайней мере, в большей степени?
(Если это актуально, я в основном задаюсь вопросом об этом в контексте MERGE
.)