Мне была рекомендована следующая хранимая процедура для проверки таблицы входа в систему.
CREATE PROCEDURE ApplicationLogin
@Username NVARCHAR(255),
@IpAddress NVARCHAR(255)
AS
BEGIN
DECLARE @UserID INT;
BEGIN TRANSACTION;
SET @UserID = (SELECT UserID FROM User WHERE Username = @Username);
IF @UserID > 0
BEGIN
UPDATE User
SET LastLogin = GETDATE()
WHERE UserID = @UserID;
END
INSERT INTO UserLogger (Username, UserID, TimeStamp)
VALUES (@Username, @UserID, @Timestamp);
COMMIT TRANSACTION;
SELECT @UserID
END
Однако я не могу заставить ее работать из-за некоторых синтаксических ошибок, которые я не могу понять.
Таблица User
выглядит следующим образом:
CREATE TABLE [dbo].[User]
(
[UserID] [INT] IDENTITY(1,1) NOT NULL,
[UserName] [VARCHAR](50) NOT NULL,
[Enabled] [BIT] NOT NULL,
[LastLogin] [TIMESTAMP] NOT NULL,
PRIMARY KEY CLUSTERED ([UserID] ASC)
)
Таблица Audit
выглядит следующим образом:
CREATE TABLE [dbo].[UserLogger]
(
[UserID] [INT] IDENTITY(1,1) NOT NULL,
[UserName] [VARCHAR](50) NOT NULL,
[Name] [VARCHAR](100) NULL,
[TS] [TIMESTAMP] NULL,
[IpAddress] [NCHAR](10) NULL
) ON [PRIMARY]
Я получаю ошибку
Невозможно обновить столбец отметки времени
, чего я не понимаю, почему.
Есть идеи?