删除用户和用户个人资料

时间:2012-03-07 15:41:53

标签: sql stored-procedures

我是SQL和存储过程的新手,需要一些有关下面存储过程的帮助。我必须连接彼此的表:“用户”和“个人资料”。

删除用户时,也应删除用户个人资料,这就是下面的SP所做的事情。但是,当执行SP时,表中的所有UserID都显示出来(当然是因为“SELECT UserID”),这是我不想要的。

所以,我想我的问题是如何编写Sp以便它可以在不使用SELECT的情况下工作?

提前致谢。

CREATE PROCEDURE usp_DeleteUser
@UserID int
AS
BEGIN
  BEGIN TRY
    BEGIN TRANSACTION;
        SELECT u.UserID 
        FROM [User] AS u INNER JOIN Profile AS p
             ON u.UserID = p.UserID;

        DELETE FROM Profile
        WHERE UserID = @UserID;

        DELETE FROM [User]
        WHERE UserID = @UserID;

    COMMIT TRANSACTION;
    END TRY
    BEGIN CATCH
        ROLLBACK TRANSACTION
        RAISERROR ('Borttagningen gick inte att genomföra!',16,1)
    END CATCH
END
GO

4 个答案:

答案 0 :(得分:3)

Profile.UserID应该是一个外键,表示与User表的一对一关系,并指定了ON DELETE CASCADE。然后从User表中删除记录,Profile表中的相关记录将自动删除。

答案 1 :(得分:3)

这句话是多余的。删除它:

    SELECT u.UserID 
    FROM [User] AS u INNER JOIN Profile AS p
         ON u.UserID = p.UserID;

答案 2 :(得分:1)

SELECT完全没必要,可能是某人作为测试添加的。您也应该在SET NOCOUNT ON之后添加AS BEGIN以提高效率。

答案 3 :(得分:0)

只需删除SELECT语句即可。它实际上并没有在您的查询中添加任何内容。