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

NB〜here [username]列は、エラーを示すための参照として使用されています。この状況は、他の列でも発生する可能性があります。したがって、どの列で発生しているかを確認するだけです。

于 2012-10-11T04:18:22.283 に答える