sql-server - 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 位数字。
解决方案
试试这个(如果你没有,我也建议添加错误处理):
@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
推荐阅读
- javascript - 在同一运行时安全隔离两个 Javascript 代码库?
- reactjs - 如何将 React Context 与 Hooks 一起使用?
- c# - .Net Framework C# MVC 自发重定向到来自错误控制器的视图
- eslint - 如何使用 testing-library/no-node-access 访问 props.children
- php - 清除事件 ID 并调用新的事件 ID 而无需刷新页面
- postgresql - EF Core 使用对象内部对象和 FK 查询 DTO
- reactjs - 你应该在 HOC 组件中访问 redux 存储吗?
- javascript - 为什么我收到错误“SyntaxError: Unexpected keyword 'else' in if elseif elseif else
- php - 在受保护的 dataProvider 方法中获取固定装置
- flutter - 更改选项卡不会重建列表