插入时的标识符无效
invalid identifier on insert
create table query_results.temporary_20200422(
a_string varchar,
a_hash varchar default sha2(a_string,512)
)
成功。然而,
insert into query_results.temporary_20200422(a_string) values('1')
产量
SQL compilation error: error line 1 at position 5 invalid identifier 'TEMPORARY_20200422.A_STRING'
怎么回事?
我的意思是,使用现有列的函数作为另一列的 default
值完全有可能不起作用——事实上,这就是我正在测试的——但我不相信这是问题是因为错误在第 1 行,位置 5.
正如您已经确认的那样,无法引用 "any columns of the table"。
请检查:
为什么显示错误在第1行第5位置?我认为这与您的默认表达式有关:
sha2(a_string,512)
a_string 的位置在第 1 行,位置 5(因为我们从 0 开始计数)。如果你像这样创建 table,你会看到错误在第 1 行,位置 12:
create or replace table temporary_20200422(
a_string varchar,
upstr varchar default lower(upper(a_string))
)
;
insert into temporary_20200422 (a_string) values('1');
SQL 编译错误:错误行 1 在位置 12 无效标识符 'TEMPORARY_20200422.A_STRING'
create table query_results.temporary_20200422(
a_string varchar,
a_hash varchar default sha2(a_string,512)
)
成功。然而,
insert into query_results.temporary_20200422(a_string) values('1')
产量
SQL compilation error: error line 1 at position 5 invalid identifier 'TEMPORARY_20200422.A_STRING'
怎么回事?
我的意思是,使用现有列的函数作为另一列的 default
值完全有可能不起作用——事实上,这就是我正在测试的——但我不相信这是问题是因为错误在第 1 行,位置 5.
正如您已经确认的那样,无法引用 "any columns of the table"。
请检查:
为什么显示错误在第1行第5位置?我认为这与您的默认表达式有关:
sha2(a_string,512)
a_string 的位置在第 1 行,位置 5(因为我们从 0 开始计数)。如果你像这样创建 table,你会看到错误在第 1 行,位置 12:
create or replace table temporary_20200422(
a_string varchar,
upstr varchar default lower(upper(a_string))
)
;
insert into temporary_20200422 (a_string) values('1');
SQL 编译错误:错误行 1 在位置 12 无效标识符 'TEMPORARY_20200422.A_STRING'