4

这是我要运行的代码:

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
  )));

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

4

6 回答 6

9

我查看了几篇文章,包括这篇文章,以应付类似的删除。我使用查询将有些复杂的选择标准提炼成一组用于记录删除的表的主键。

在我使用之前,我收到“无法从指定的表中删除”错误和“指定包含要删除的记录的表”错误:

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 )
;

这在 Access 2013 中有效。

于 2015-01-17T17:56:51.737 回答
3

选择子查询中的 ID 并使用 in 在表上运行 delete

Delete * from 
tbl_Delete

Where ID in (

Select id form table1
left join ..
left join ...

)
于 2017-02-18T09:08:05.540 回答
3

这确实是一个令人愤怒的问题,因为即使是上面引用的下面的代码,如果 Criteria_Query 实际上是一个查询而不是表,也会导致“无法从指定的表中删除”错误。

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 )
;

解决方法是先将select的结果Criteria_Query放入一个表中tbl_Criteria_Query,然后在delete语句中使用该表:

select *
into [tbl_Criteria_Query] 
from [Criteria_Query]
;

delete distinctrow [Target_Table].* 
from [Target_Table] 
inner join [tbl_Criteria_Query] 
on [tbl_Criteria_Query].Index_PK = [Target_Table].Index_PK
;
于 2015-07-28T16:39:51.607 回答
0

只需运行 Visual Studio(以管理员身份运行)。

于 2016-02-09T11:57:02.040 回答
0

使用 MS Access 前端和 SQL Server 后端时,我遇到了同样的错误。我发现如果我在 SQL 中使主键与 Access 中的本地表中的主键相同,问题就解决了。

于 2017-08-10T13:44:57.137 回答
0

以下对我有用designview->propertysheet->General->set unique records to "yes"

于 2018-05-10T08:08:52.227 回答