我想将值(“ testu”,“ testp”,“ testname”,“ testsur”,“ testemail”)插入[dbo]。[用户]
我正在使用Microsoft SQL Server 2012,并且每当我尝试查询类似内容时
INSERT INTO [dbo].[users] VALUES ('testu', 'testp', 'testname', 'testsur', 'testemail')
我在“ INSERT”语句上收到一条错误消息:该语句在上下文中无法识别。这是什么意思?我该如何解决?
CREATE TABLE [dbo].[users] ( [username] VARCHAR (40) NOT NULL, [password] VARCHAR (40) NOT NULL, [name] VARCHAR (40) NOT NULL, [surname] VARCHAR (40) NOT NULL, [email] VARCHAR (40) NOT NULL, PRIMARY KEY CLUSTERED ([username] ASC) );
我正在使用 [TestDB]* 名称在数据库中运行您的语句 *
USE [TestDB] GO CREATE TABLE [dbo].[users] ( [username] VARCHAR (40) NOT NULL, [password] VARCHAR (40) NOT NULL, [name] VARCHAR (40) NOT NULL, [surname] VARCHAR (40) NOT NULL, [email] VARCHAR (40) NOT NULL, PRIMARY KEY CLUSTERED ([username] ASC) ); GO INSERT INTO [dbo].[users] VALUES ('testu', 'testp', 'testname', 'testsur', 'testemail')
接下来,我将尝试在表中插入另一行,如下所示
INSERT INTO [dbo].[users] VALUES ('testuwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww', 'testp', 'testname', 'testsur', 'testemail')
这是一个错误,指示[UserName]列值的长度大于创建DDL时指定的长度。
解决方案
A)将[UserName]的长度限制在40个字符以内(在此示例中)。
B)或通过使用 ALTER 语句来增加[UserName]列的长度。
例如
ALTER TABLE [dbo].[users] ALTER COLUMN [username] VARCHAR (100) NOT NULL
注意〜这里[用户名]列仅作为指出错误的参考。其他列也可能发生这种情况。因此,只需验证发生在哪一列。