Sql 删除用户和用户配置文件
我是SQL和存储过程的新手,需要以下存储过程的帮助。我必须创建相互连接的表:“用户”和“配置文件” 删除用户时,还应删除用户配置文件,下面的SP就是这么做的。但是,当执行SP时,表User中的所有UserID都会显示出来(当然是因为“selectuserid”),这是我不想要的 因此,我想我的问题是如何编写Sp,使其在不使用SELECT的情况下工作 提前谢谢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
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
-它在这方面没有任何作用这是删除的原因。