代码检查:误导性引用
报告 SQL 代码中不明确的引用。
例如,当名称同时引用表列和例程参数时。由于违反直觉的解析逻辑,此类代码的执行可能会导致错误或意外结果。通常,具有更多本地范围的名称具有更高的优先级。示例(PostgreSQL):CREATE TABLE foo ( id INT, name VARCHAR(5) ); CREATE FUNCTION func(name VARCHAR(5)) RETURNS INT AS $$ DECLARE b INT; BEGIN -- `name` 不明确,因为它用作列名和参数 SELECT COUNT(*) INTO b FROM foo t WHERE t.name = name; 返回 b; 结尾; $$ 语言 plpgsql;
在 PostgreSQL 中,您可以使用#variable_conflict
指令显式指定正确的引用。例如,用于#variable_conflict use_column
引用列名或#variable_conflict use_variable
引用参数。CREATE TABLE foo ( id INT, name VARCHAR(5) ); CREATE FUNCTION func(name VARCHAR(5)) RETURNS INT AS $$ #variable_conflict use_column DECLARE b INT; BEGIN SELECT COUNT(*) INTO b FROM t WHERE t.name = name; 返回 b; 结尾; $$ 语言 plpgsql;
禁止编辑器中的检查
将插入符号放在突出显示的行上,然后按Alt+Enter或单击。
单击要抑制的检查旁边的箭头,然后选择必要的抑制操作。
最后修改:2022 年 2 月 11 日