Teradata-仅插入新行

时间:2019-07-30 19:21:37

标签: sql teradata

有人可以告诉我此插入语句出了什么问题吗? 如果尚未存在USER_ID,OBJECT和DATE的组合,我尝试从PERMS_STG2表向USERS_AND_USAGE_STG2表中插入新行。

USERS_AND_USAGE_STG2具有唯一的密钥DATE,USER_ID和OBJECT。 当我运行下面的语句时,它出现“ INSERT Failed。2801:重复的唯一主键错误在...中的错误”。 **我意识到登台表通常没有唯一键,但这是在告诉我我的“如果不存在,请插入”无法正常工作。

INSERT INTO WORK1.USERS_AND_USAGE_STG2 
(EFF_DT
 ,USER_ID
 ,SP_ADDED_DT
 ,OBJECT
 ,ACCESS_IS_ACTIVE)

 SELECT 
 EFF_DT
 ,USER_ID
 ,EFF_DT
 ,COMBO_NAME
 ,'Y'
 FROM WORK1.PERMS_STG2 P
 WHERE NOT EXISTS (SELECT USER_ID, OBJECT
                    FROM WORK1.USERS_AND_USAGE_STG2
                    WHERE USER_ID = P.USER_ID
                        AND OBJECT = P.COMBO_NAME
                        AND EFF_DT = P.EFF_DT);

1 个答案:

答案 0 :(得分:0)

上面的代码是/正确的。我的源数据有问题。 @JNevill指出这一点值得称赞。