为什么在正确的时候说不正确的语法

时间:2019-04-23 14:09:15

标签: sql visual-studio

我当前正在尝试在Visual Studio中执行查询以将用户添加到我的数据库中。 我已将数据库添加到服务器资源管理器中,然后右键单击它并选择了New query 在我的表中有一个名为dbo.User的表,并且我正在尝试执行此查询。

INSERT INTO User (Username, Password, Color)
VALUES ('Craig', 'password', 'Green')

Intellisense甚至识别出User,并且由于某种原因Password is highlighted as a keyword

为什么将红线用户User放在INSERT INTO User中说Incorrect syntax near 'User'

2 个答案:

答案 0 :(得分:6)

用户是SQL Server的保留关键字。要解决此问题,请将关键字放在方括号中。请尝试以下操作:

INSERT INTO [User] (Username, Password, Color)
VALUES ('Craig', 'password', 'Green')

答案 1 :(得分:1)

将表重命名为非保留字。我通常以复数形式命名表格。原因之一是因为复数之间的冲突较少(想到VALUES)。另一个是因为它们包含实体的多个副本,所以复数似乎是适当的。

所以,这应该起作用:

INSERT INTO Users (Username, Password, Color)
    VALUES ('Craig', 'password', 'Green');

保留字列表在documentation中。

我也强烈建议您不要在这样的表中存储自由文本密码。用户键入密码时,应该对密码进行编码,这样您的应用程序将永远看不到它。用户经常在多个系统上重复使用密码,因此在任意位置使用自由文本密码都是一个安全漏洞。