неверный идентификатор при вставке - PullRequest
1 голос
/ 22 апреля 2020
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 ошибка компиляции: строка ошибки 1 в позиции 5 неверный идентификатор 'TEMPORARY_20200422.A_STRING'

Что что происходит?

Я имею в виду, вполне возможно, что использование функции существующего столбца в качестве значения default для другого столбца не работает - действительно, это то, что я тестировал - но я не убежден, что это проблема, потому что ошибка в строке 1, позиции 5.

1 Ответ

1 голос
/ 22 апреля 2020

Как вы уже подтвердили, невозможно сослаться на "любые столбцы таблицы".

Пожалуйста, проверьте:

https://support.snowflake.net/s/question/0D50Z00009T2MHSSA3/persistent-virtual-column-using-default-on-an-existing-table

Почему отображается ошибка в строке 1, позиции 5? Я думаю, что это ваше выражение по умолчанию:

sha2(a_string,512)

Расположение строки a_string находится в строке 1, позиции 5 (поскольку мы начинаем считать с 0). Если вы создадите таблицу, подобную этой, вы увидите, что ошибка находится в строке 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'

...