Я пытаюсь создать базу данных, частью которой является хранение кода Европейского каталога отходов (EWC).
Код EWC представляет собой иерархический код из 2, 4 или 6 цифр, где первый2 символа представляют главы, следующие 2 представляют подразделы, а последние 2 представляют описания отходов.
Например:
02
Отходы сельского хозяйства, садоводства, аквакультуры, лесного хозяйства, охоты и рыболовства,Приготовление и обработка пищи
0202
отходы от приготовления и переработки мяса. Рыба и другие продукты животного происхождения
020203
материалы, непригодные для потребления или переработки
Необходимо хранить все дерево, поэтому я хотел убедиться, что родитель существует при создании дочерней записи.
Однако ... Я немного озадачен тем, как подойти к этому. Внешний ключ, который не ссылается непосредственно на столбец (то есть: сначала пытается вызвать функцию), вызывает синтаксическую ошибку:
...
foreign key substring(ewc_code, 1, length(ewc_code) - 2) references cdsw_data.ewc_codes (ewc_code) match simple on update restrict on delete cascade
...
ERROR: syntax error at or near "substring"
LINE 5: foreign key substring(ewc_code, 1, length(ewc_code) - 2) re...
Может кто-нибудь направить меня к правильному решению для этого, пожалуйста?
Структура таблицы:
create table cdsw_data.ewc_codes (
ewc_code varchar(6) primary key,
ewc_descrition text,
constraint valid_ewc check(ewc_code ~ '^(\d\d){1,3}$')
);