如何避免"无法从指定的表中删除".在MS Access中

use*_*887 3 sql ms-access runtime-error sql-delete

这是我试图运行的代码:

DELETE DISTINCTROW JHALL_REFERAL_ASSIGNMENTS.emp_id, JHALL_REFERAL_ASSIGNMENTS.ref_elem_id
FROM JHALL_REFERAL_ASSIGNMENTS
WHERE (((JHALL_REFERAL_ASSIGNMENTS.emp_id)=(select  b.emp_id from JHALL_REFERAL_ELEMENT a, JHALL_REFERAL_ASSIGNMENTS b, BSI_MARTS_D_EMPLOYEE c
    where C.FULL_NM = 'Employee'
    and A.REF_NAME ='Max Premium of 5,000'
    and A.REF_ELEM_ID = B.REF_ELEM_ID
    and B.emp_id = C.EMPLOYEE_KEY
)) AND ((JHALL_REFERAL_ASSIGNMENTS.ref_elem_id)=(select  a.ref_elem_id from   JHALL_REFERAL_ELEMENT a, JHALL_REFERAL_ASSIGNMENTS b, BSI_MARTS_D_EMPLOYEE c
    where C.FULL_NM = 'Employee'
    and A.REF_NAME ='Max Premium of 5,000'
    and A.REF_ELEM_ID = B.REF_ELEM_ID
    and B.emp_id = C.EMPLOYEE_KEY
  )));
Run Code Online (Sandbox Code Playgroud)

每次我尝试在Access中运行它时,我都会收到错误3086,"无法从指定的表中删除".当试图在线查找信息时,我一直在遇到决议,说我应该将"唯一记录"字段更改为"是",但我没有解决我的问题.我在Toad中运行相同的代码(用.而不是分隔模式和表名_),它运行良好.

小智 8

我查看了几个帖子,包括这个帖子,以便混淆类似的删除.我使用查询将有些复杂的选择标准提炼为一组主键,用于记录删除的目标表.

我得到了"无法从指定的表中删除"错误和"指定包含您要删除的记录的表"错误,直到我使用:

delete distinctrow [Target_Table].* 
from [Target_Table] 
inner join [Criteria_Query] 
on [Criteria_Query].Index_PK = [Target_Table].Index_PK
where ( [Criteria_Query].Index_PK = [Target_Table].Index_PK )
;
Run Code Online (Sandbox Code Playgroud)

这在Access 2013中有效.