53 lines
1.7 KiB
MySQL
53 lines
1.7 KiB
MySQL
|
|
CREATE PROCEDURE [dbo].[sp_LockUpdate]
|
|||
|
|
@UserId INT = NULL
|
|||
|
|
,@UserName NVARCHAR(50) = NULL
|
|||
|
|
,@ItemId INT = NULL
|
|||
|
|
,@CategoryId INT
|
|||
|
|
,@MachineName NVARCHAR(50)
|
|||
|
|
,@errorNumber INT OUTPUT
|
|||
|
|
,@errorMessage NVARCHAR(250) OUTPUT
|
|||
|
|
,@LockingUser NVARCHAR(50) OUTPUT
|
|||
|
|
,@LockingMachine NVARCHAR(50) OUTPUT
|
|||
|
|
,@LastUsedTime DATETIME OUTPUT
|
|||
|
|
,@LockCreateTime DATETIME OUTPUT
|
|||
|
|
AS
|
|||
|
|
BEGIN
|
|||
|
|
SET @errorNumber = 0
|
|||
|
|
SET @errorMessage = space(0)
|
|||
|
|
SET @LockingUser = space(0)
|
|||
|
|
SET @LockingMachine = space(0)
|
|||
|
|
SET @LastUsedTime = null
|
|||
|
|
SET @LockCreateTime = null
|
|||
|
|
|
|||
|
|
IF(@UserId) IS NULL
|
|||
|
|
BEGIN
|
|||
|
|
IF NOT EXISTS( SELECT ID FROM Users WHERE UserName=@UserName)
|
|||
|
|
BEGIN
|
|||
|
|
SET @errorNumber = 2
|
|||
|
|
SET @errorMessage = 'User not found'
|
|||
|
|
return -1
|
|||
|
|
END
|
|||
|
|
END
|
|||
|
|
|
|||
|
|
IF NOT EXISTS( SELECT LockId FROM LockedItems WHERE CategoryId=@CategoryId AND ItemId=@ItemId AND DataPROUserID=@UserId AND MachineName=@MachineName)
|
|||
|
|
BEGIN
|
|||
|
|
IF EXISTS( SELECT LockId FROM LockedItems WHERE CategoryId=@CategoryId AND ItemId=@ItemId)
|
|||
|
|
BEGIN
|
|||
|
|
SET @errorNumber = 4
|
|||
|
|
SET @errorMessage = 'Locked by another user'
|
|||
|
|
SELECT @LockingUser = B.UserName, @LockingMachine=A.MachineName, @LastUsedTime=A.LastTouch, @LockCreateTime=A.StartTime FROM LockedItems as A INNER JOIN Users as B on A.DataPROUserID=B.ID WHERE A.CategoryId=@CategoryId AND A.ItemId=@ItemId
|
|||
|
|
END
|
|||
|
|
ELSE
|
|||
|
|
BEGIN
|
|||
|
|
SET @errorNumber = 3
|
|||
|
|
SET @errorMessage = 'No lock to update'
|
|||
|
|
return -1
|
|||
|
|
END
|
|||
|
|
END
|
|||
|
|
ELSE
|
|||
|
|
BEGIN
|
|||
|
|
DECLARE @UpdateTime DateTime
|
|||
|
|
SET @UpdateTime = GetDate()
|
|||
|
|
UPDATE LockedItems Set LastTouch=@UpdateTime WHERE CategoryId=@CategoryId AND ItemId=@ItemId AND DataPROUserID=@UserId
|
|||
|
|
END
|
|||
|
|
END
|