PostgreSQL中如何仅当scm_orgs的token_id非空时执行UPDATE脚本
实现方案
在原有判断scm_repos表存在的逻辑基础上,新增针对scm_orgs表token_id非空的判断即可,修改后的完整脚本如下:
DO ' BEGIN IF EXISTS (SELECT 1 FROM pg_class where relname=$J$scm_repos$J$) THEN -- 仅当scm_orgs存在非空token_id记录时执行更新 IF EXISTS (SELECT 1 FROM scm_orgs WHERE token_id IS NOT NULL) THEN UPDATE scm_repos repos SET token_id=(SELECT token_id FROM scm_orgs orgs WHERE repos.org_id=orgs.id); UPDATE scm_orgs SET token_id = NULL; END IF; END IF ; END; '
如果你的需求是无论第一条UPDATE是否执行,都要清空scm_orgs的token_id,只需把第二条UPDATE语句移到内层IF判断的外侧即可。
你也可以选择不新增嵌套判断,直接在第一条UPDATE语句中添加执行条件,效果完全一致:
UPDATE scm_repos repos SET token_id=(SELECT token_id FROM scm_orgs orgs WHERE repos.org_id=orgs.id) WHERE EXISTS (SELECT 1 FROM scm_orgs WHERE token_id IS NOT NULL);
内容的提问来源于stack exchange,提问作者nimrod
相关产品推荐
相关产品推荐

