我有两张桌子,BookingDetails& VenueAvaiability。 VenueID是VenueAvaillability中的PK,是BookingDetails的FK。
在我的ui for aspx中,它将调用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 BookingID=@BookingID", con);
cmd.Parameters.AddWithValue("@BookingID", venueInfo.BookingID);
在aspx.cs中
DeleteVenueAvailability venueInfo = new DeleteVenueAvailability();
venueInfo.BookingID = lblBookingID.Text;
答案 0 :(得分:0)
我不明白你想通过说“通过WCF”来实现什么。我的建议是在Sql端执行所有的东西,并从前端调用该查询作为SP。简单!!
我从问题中看到的是你想要清理VenueAvaiability并改变BookingDetails。
所以,这是我的建议:
构建您的查询,以便在制作临时表或备份其他地方后删除预订可用性中的所有行。
更改表格预订可用性和删除ID列。
现在可以安全地在VenueAvaiability上运行Truncate查询,因为所有引用都已从引用的表中删除..
答案 1 :(得分:0)
当VenueAvailabilities中的相应行被删除时,你确实有外键将NULL设置为BookingDetails.VenueId。
那么为什么不做这样的事情呢?
DELETE FROM VenueAvailabilities WHERE VenueId = @VenueId;
你只需要从某个地方获取VenueId。