我正在尝试创建一个数据库,其中一部分涉及存储欧洲废物目录(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,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}$')
);