首页 > 解决方案 > IF NOT EXIST 插入 ELSE IF 更新 ELSE IF EXISTS 并且不是数字 DELETE From WHERE

问题描述

我想修改下面的存储过程。

@UserID INT
@Unlock VARCHAR(4)

AS
SET NOCOUNT ON

IF NOT EXISTS (SELECT * FROM dbo.tblUnlockCode WHERE iUserID = @UserID)
BEGIN
IF ISNUMERIC(@Unlock) = 1
BEGIN 
INSERT dbo.tblUnlockCode (iUserID, sUnlockCode) VALUES (@UserID, @Unlock)
END 

我实际上想添加到它,如果 iUserID 存在将@Unlock 更新到新的 Pin,并且如果 iUserID 存在于表上但 @Unlock 在文本字段中被删除(在访问中)它会从桌子。我只想存储 4 位密码的 iUserID。我怎么能那样做?

PS on access 我正在检查密码是否为 4 位数字。

标签: sql-serverstored-procedures

解决方案


试试这个(如果你没有,我也建议添加错误处理):


    @UserID INT
    @Unlock VARCHAR(4)

    AS
    SET NOCOUNT ON

    IF NOT EXISTS (SELECT * FROM dbo.tblUnlockCode WHERE iUserID = @UserID)
    BEGIN
      IF ISNUMERIC(@Unlock) = 1
      BEGIN 
        INSERT dbo.tblUnlockCode (iUserID, sUnlockCode) VALUES (@UserID, @Unlock)
      END   
    END
    ELSE
    BEGIN
      IF ISNUMERIC(@Unlock) = 1
      BEGIN 
        UPDATE dbo.tblUnlockCode set sUnlockCode=@Unlock WHERE iUserID= @UserID
      END   
      ELSE --Assuming you want to clear the record if unlock code is empty
      BEGIN
        DELETE dbo.tblUnlockCode WHERE iUserID= @UserID      
      END
    END

推荐阅读