2011-01-26 4 views
2

다음 데이터를 사용하여 두 테이블에서 일치하는 레코드를 삭제하려고합니다.Access 2007의 여러 테이블에서 레코드 삭제

과일

ID 값
1 애플
2 배
3 바나나
4 포도

동물

ID 값
1 베어
2 원숭이
3 Ap를 ple
4 돼지

이 두 테이블 사이에는 정의 된 관계가 없습니다.

"Apple"이 두 테이블에 모두 나타나므로이 레코드를 각 테이블에서 제거하고 싶습니다.

나는이 달성하기 위해 다음과 같은 쿼리를 시도했다 : 그러나

DELETE DISTINCTROW Animals.*, Fruits.* 
FROM Animals INNER JOIN Fruits ON Animals.Value = Fruits.Value; 

을, 나는이 프로그램을 실행할 때, 나는 다음과 같은 오류가 나타납니다

Could not delete from specified tables.

내가 잘못하고, 무엇을하고 무엇을 이 문제를 해결할 수 있습니까?

답변

4

계단식 삭제 기능을 활용하지 않고 관계를 맺지 않으면 운이 없어집니다. DELETE 문은 한 번에 하나의 테이블에서 작동합니다 (계단식 삭제가있는 경우, 뒤에서 수행됨). 당신은 당신이 원하는 것을 성취하기 위해 뭔가를 고안 할 수 밖에 없습니다. 아마, 매크로를 통해, 하나는이 같은 단순한 뭔가 할 수있는 : 정교한 VBA 매크로 (그리고 아마도 임시 테이블을) 만드는

UPDATE Animals, Fruits SET Animals.Value="DELETED", Fruits.Value="DELETED" WHERE Animals.Value=Fruits.Value 
DELETE Animals WHERE Animals.Value="DELETED" 
DELETE Fruits WHERE Fruits.Value="DELETED" 

짧은이는 도착만큼이나 좋다.

SQL Server 또는 DB2와 같은 더 강력한 DB를 사용하더라도 SQL Server를 수행 할 수 없다고 생각합니다. 서브 u 리나 뷰에 대한 DELETE는 여전히 DB 시스템이이를 특정 테이블로 해석 할 것을 요구합니다.

내가 가진 오류는 잠긴 행 (INNER JOIN 결과)의 문제라고 생각할 것입니다.

+0

하나의 명령문에서이 작업을 수행 할 수있는 DBMS에 대해서는 알지 못합니다. 계단식 삭제 또는 트리거는 후속 효과의 다른 형태이며, 명령문의 일부가 아닙니다. – RolandTumble

관련 문제