我試圖使用以下存儲過程的數據庫中刪除父和子記錄:刪除父和子記錄
CREATE PROCEDURE [dbo].[DeleteCompanyPersonAndPhoneNumbers] (
@personId int,
@deleted bit output)
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
set @deleted = 0
begin transaction
-- delete the phone numbers
delete from PersonalPhoneNumber
where PersonalPhoneNumber.PersonId = @personId
delete from ProfessionalProfile
where ProfessionalProfile.Person_Id = @personId
delete from aspnet_UserProfile
where aspnet_UserProfile.Person_ID = @personId
delete from Accreditation
where Accreditation.Person_ID = @personId
delete from Qualification
where Qualification.Person_ID = @personId
delete from PERSON where Person_ID = @personId
set @deleted = 1
commit transaction
END
我已經設置了外鍵強制關閉。運行sp時,它只會刪除父記錄。
我在做任何錯誤的SP?
感謝
似乎也可以刪除孩子; http://sqlfiddle.com/#!6/55fd5/1 –
你的做法是相當於#2這個問題:http://stackoverflow.com/questions/17855349/sql-server-recursive-delete它看起來像你的代碼應該工作。它真的會從PERSON中刪除一行匹配personId但不從子項中刪除的行嗎?這個人的確很匹配? –
我需要看到你必須給你確切代碼的表格。我知道你必須從最後一張桌子開始,逐步走上梯子去除所有的孩子和父母。 – JayKlassen