2013-12-17 2 views
-1

2 개의 테이블이 있습니다. BookingDetails & VenueAvaiability. VenueID는 VenueAvaillability의 PK이며 BookingDetails의 FK입니다.WCF를 통해 FK rlsp가있는 2 개의 테이블을 삭제하십시오

내 aspx에서, 그것은 WCF 서비스를 호출하여 삭제를 수행합니다. 버튼을 클릭하면 BookingDetails에서 VenueID를 삭제하고 VenueAvaillability에서 전체 행을 삭제합니다.

나는

Incorrect syntax near the keyword 'FOREIGN' 

누구든지 나를 도울 수있어? aspx.cs

난 당신이 "WCF를 통해"말함으로써 달성하고자하는 않는 것을 이해 해달라고
DeleteVenueAvailability venueInfo = new DeleteVenueAvailability(); 

venueInfo.BookingID = lblBookingID.Text; 
+1

왜 간단한 데이터 조작을 위해 "ALTER TABLE"이 필요합니까? – nvoigt

+0

venueId를 null로 변경하십시오 (널 (NULL)을 허용한다고 가정 함). 그런 다음 venueavailability에서 행을 삭제하십시오. – scheien

+0

삭제를위한 이러한 모든 것들? 뭔가 잘못되었습니다! –

답변

0

을 VenueAvaiability에 자르기 쿼리를 실행하는 것이 안전합니다 VenueAvailabilities의 해당 행이 삭제됩니다.

는 왜 단지 같은 것을 할 수 없습니다 :

DELETE FROM VenueAvailabilities WHERE VenueId = @VenueId; 

당신은 어디에서 VenueId를 얻을 필요가있다.

+0

고마워요. 이제 작동합니다! – user3111115

0

에서 내 WCF

SqlCommand cmd = new SqlCommand("ALTER Table BookingDetails DROP 
Constraint FK_BookingDetails_VenueAvailability FOREIGN KEY(VenueID) 
REFERENCES VenueAvailability(VenueID) ON DELETE SET NULL 
WHERE [email protected]", con);   
cmd.Parameters.AddWithValue("@BookingID", venueInfo.BookingID); 

에서

//. 내가 제안하는 것은 SQL 끝에서 모든 것을 수행하고 프런트 엔드에서 SP로 쿼리를 호출하는 것입니다. 단순한!!

내가 궁금한 점은 VenueAvaiability를 정리하고 BookingDetails를 변경하려고한다는 것입니다. 그것은 임시 테이블을 만들거나 일부 경우 다른 백업 후 예약 가능 여부 모든 행을 삭제할 수 있도록

  1. 가 쿼리를 작성 :

    그래서, 여기에 내 제안입니다.

  2. 변경 테이블 예약 가능 및 삭제 ID 열.

  3. 지금은 모든 참조가 이미 참조 된 테이블에서 삭제되기 때문에 .. 당신은 BookingDetails.VenueId에 NULL 설정하는 외부 키가 할

+0

VenueAvailabilities에서 특정 행을 삭제하고 지정된 BookingId에 따라 BookingDetails에서 외래 키를 제거하려고합니다. VenueAvailabilities에서 모든 행을 제거하지 않으려한다고 생각합니다. – scheien

관련 문제