2

我想将值('testu'、'testp'、'testname'、'testsur'、'testemail')插入到 [dbo].[users]

我正在使用 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)
);
4

1 回答 1

2

我正在名为[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

注意~这里的 [username] 列只是作为参考来指出错误。这种情况也可能发生在其他列上。因此,只需验证它发生在哪一列。

于 2012-10-11T04:18:22.283 回答