2013-12-17 63 views
-1

我有2個表,BookingDetails & VenueAvaiability。 VenueID是VenueAvaillability中的PK,適用於BookingDetails的FK。通過WCF刪除2個FK rlsp表

在我的用於aspx的ui中,它將調用WCF服務來執行刪除操作。當我點擊按鈕時,我想從BookingDetails中刪除VenueID並刪除VenueAvaillability中的整行。

Incorrect syntax near the keyword 'FOREIGN' 

任何人都可以幫我嗎?

在我的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); 

//在aspx.cs

DeleteVenueAvailability venueInfo = new DeleteVenueAvailability(); 

venueInfo.BookingID = lblBookingID.Text; 
+1

爲什麼你需要一個「ALTER TABLE」進行簡單的數據操作? – nvoigt

+0

更新venueId爲null(因爲它是外鍵列(假設您允許爲空值)),然後從場地可用性中刪除該行。 – scheien

+0

所有這些東西刪除?這裏不對勁! –

回答

0

你確實有外鍵設置爲NULL時BookingDetails.VenueId的VenueAvailabilities中相應的行被刪除。

那麼,爲什麼不只是做這樣的事情:

DELETE FROM VenueAvailabilities WHERE VenueId = @VenueId; 

你只需要從某處得到VenueId。

+0

謝謝你..它現在的作品! – user3111115

0

我不明白你想要說 「通過WCF」 來實現的。我建議在Sql端執行所有的東西,並從前端調用該查詢作爲SP。簡單!!

我從問題中觀察到的是您要清潔VenueAvaiability並更改BookingDetails。

所以,這裏是我的建議:

  1. 構建查詢,這樣它會做一個臨時表或備份一些別的地方後刪除預訂可用性的所有行。

  2. 改變表格預約可用性並刪除id列。

  3. 現在,它的安全運行VenueAvaiability一個截斷查詢,因爲所有的引用已經從被引用表中刪除..

+0

他希望刪除VenueAvailabilities中的特定行,並根據給定的BookingId刪除BookingDetails中的外鍵。我猜他不想刪除VenueAvailabilities中的所有行。 – scheien