使SQL INSERT语句更易于阅读

egg*_*rtx 5 sql go code-readability

我正在研究Go中的一个程序,它会大量使用MySQL.为了便于阅读,是否可以在INSERT语句中的每个列名后包含列的值?喜欢:

INSERT INTO `table` (`column1` = 'value1', `column2` = 'value2'...);
Run Code Online (Sandbox Code Playgroud)

代替

INSERT INTO `table` (`column`, `column2`,...) VALUES('value1', 'value2'...);
Run Code Online (Sandbox Code Playgroud)

因此,考虑到SQL字符串通常可以获得相当长的时间,因此更容易看出哪个值与哪个列相关联

Mit*_*eat 3

不,您不能使用您建议的语法(尽管它会很好)。

一种方法是排列列名称和值:

INSERT INTO `table` 
(`column`, `column2`,...) 
VALUES
('value1', 'value2'...);
Run Code Online (Sandbox Code Playgroud)

更新响应您的评论“语句包含来自字符串外部的变量”:如果您参数化 SQL 语句,那么将列名与变量匹配很容易检查参数是否为各自的列命名:@ColumnName

这实际上是我在 TSQL 脚本中执行此操作的方法:

INSERT INTO `table` 
(
    `column`, 
    `column2`,
    ...
) 
VALUES
(
    'value1', 
    'value2',
    ...
);
Run Code Online (Sandbox Code Playgroud)

(将逗号放在行首也很常见)

但说实话,一旦你获得了足够多的列,就很容易混淆列的位置。如果它们具有相同的类型(和相似的值范围),您可能不会立即注意到......