Sql 删除用户和用户配置文件

Sql 删除用户和用户配置文件,sql,stored-procedures,Sql,Stored Procedures,我是SQL和存储过程的新手,需要以下存储过程的帮助。我必须创建相互连接的表:“用户”和“配置文件” 删除用户时,还应删除用户配置文件,下面的SP就是这么做的。但是,当执行SP时,表User中的所有UserID都会显示出来(当然是因为“selectuserid”),这是我不想要的 因此,我想我的问题是如何编写Sp,使其在不使用SELECT的情况下工作 提前谢谢 CREATE PROCEDURE usp_DeleteUser @UserID int AS BEGIN BEGIN TRY

我是SQL和存储过程的新手,需要以下存储过程的帮助。我必须创建相互连接的表:“用户”和“配置文件”

删除用户时,还应删除用户配置文件,下面的SP就是这么做的。但是,当执行SP时,表User中的所有UserID都会显示出来(当然是因为“selectuserid”),这是我不想要的

因此,我想我的问题是如何编写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

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

此语句不适用冗余。删除它:

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

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

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

只需删除
SELECT
-它在这方面没有任何作用这是删除的原因。