【发布时间】:2019-01-22 20:50:49
【问题描述】:
我被推荐使用以下存储过程来审核登录表。
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]
我收到一个错误
无法更新时间戳列
我不明白为什么。
有什么想法吗?
【问题讨论】:
标签: sql stored-procedures sql-server-2012 syntax-error