如何在Oracle SQL中使用序列加载层级表TREE
在Oracle SQL中使用序列加载层级表TREE的方案探讨
现有层级表TREE(字段为ID, PARENT_ID, NAME),需要通过Oracle SQL使用序列完成数据加载(不依赖PL/SQL变量,仅用纯SQL方案),以下是两种尝试的情况:
第一种失败方案
该方案因ID=PARENT_ID违反检查约束执行失败:
insert into tree (TREE_SEQ.NEXTVAL, NULL, 'root'); insert into tree (TREE_SEQ.CURRVAL, TREE_SEQ.NEXTVAL, 'branch');
第二种可行但有局限的方案
此方案可以正常执行,但存在并发问题,且依赖序列必须设置为INCREMENT BY 1:
insert into tree (TREE_SEQ.NEXTVAL, NULL, 'root'); insert into tree (TREE_SEQ.NEXTVAL, TREE_SEQ.CURRVAL - 1, 'branch');
内容的提问来源于stack exchange,提问作者crowne
相关产品推荐
相关产品推荐

