2016-07-22 19 views
-1

私はこのスクリプトを使用してテーブルを作成するよう指示された本からチュートリアルと学習MVCを実行しています。しかし今はペットテーブルに行全体を追加したいのですが、私はそれを行うことができません。SQLの行にデータを挿入するにはどうすればよいですか?

すべてのテーブルを作成するために使用されるスクリプト。

CREATE TABLE [dbo].[Setting] (
    [Id] INT NOT NULL IDENTITY(1, 1) 
    ,[Key] VARCHAR(50) NOT NULL 
    ,[Value] VARCHAR(500) NULL 
    ,CONSTRAINT [PK_Setting] PRIMARY KEY ([Id]) 
    ); 

CREATE TABLE [dbo].[PetType] (
    [PetTypeID] INT NOT NULL IDENTITY(1, 1) 
    ,[PetTypeDescription] VARCHAR(50) NULL 
    ,CONSTRAINT [PK_PetType] PRIMARY KEY ([PetTypeID]) 
    ); 

CREATE TABLE [dbo].[Status] (
    [StatusID] INT NOT NULL IDENTITY(1, 1) 
    ,[Description] VARCHAR(50) NOT NULL 
    ,CONSTRAINT [PK_Status] PRIMARY KEY ([StatusID]) 
    ); 

CREATE TABLE [dbo].[Pet] (
    [PetID] INT NOT NULL IDENTITY(1, 1) 
    ,[PetName] VARCHAR(100) NOT NULL 
    ,[PetAgeYears] INT NULL 
    ,[PetAgeMonths] INT NULL 
    ,[StatusID] INT NOT NULL 
    ,[LastSeenOn] DATE NULL 
    ,[LastSeenWhere] VARCHAR(500) NULL 
    ,[Notes] VARCHAR(1500) NULL 
    ,[UserId] INT NOT NULL 
    ,CONSTRAINT [PK_Pet] PRIMARY KEY ([PetID]) 
    ,CONSTRAINT [FK_Pet_Status] FOREIGN KEY ([StatusID]) REFERENCES [Status]([StatusID]) 
    ,CONSTRAINT [FK_Pet_User] FOREIGN KEY ([UserId]) REFERENCES [UserProfile]([UserId]) 
    ); 

CREATE TABLE [dbo].[PetPhoto] (
    [PhotoID] INT NOT NULL IDENTITY(1, 1) 
    ,[PetID] INT NOT NULL 
    ,[Photo] VARCHAR(500) NOT NULL CONSTRAINT [DF_PhotoFile] DEFAULT '/content/pets/no-image.png' 
    ,[Notes] VARCHAR(500) NULL 
    ,CONSTRAINT [PK_PetPhoto] PRIMARY KEY ([PhotoID]) 
    ,CONSTRAINT [FK_PetPhoto_Pet] FOREIGN KEY ([PetID]) REFERENCES [Pet]([PetID]) 
    ); 

CREATE TABLE [dbo].[Message] (
    [MessageID] INT NOT NULL 
    ,[UserId] INT NOT NULL 
    ,[MessageDate] DATETIME NOT NULL 
    ,[From] VARCHAR(150) NOT NULL 
    ,[Email] VARCHAR(150) NOT NULL 
    ,[Subject] VARCHAR(150) NULL 
    ,[Message] VARCHAR(1500) NOT NULL 
    ,CONSTRAINT [PK_Message] PRIMARY KEY ([MessageID]) 
    ,CONSTRAINT [FK_Message_User] FOREIGN KEY ([UserId]) REFERENCES [UserProfile]([UserId]) 
    ); 

私のペットテーブルの最初の行にいくつかのランダムな値(テスト用)を追加します。 これは、わかりやすくするため、Petテーブルの最初の行です。

enter image description here

私は私のテーブルに値を追加するには、このスクリプトを使用してみました。

INSERT INTO Pet VALUES ('1', 'Fido', '12', '4', '1', '12/07/2004', 'New York', 'nothing', '1') 

しかし、私は列リストが使用されている場合、テーブルのID列「ペット」の明示的な値のみを指定することができ、IDENTITY_INSERTがONになっている

を言ってエラーを得ました。

私はかなり新しいSQLです。これを理解することはできません。私は人々がSET IDENTITY_INSERTについて何か言ったところで他の答えを見ましたが、これは私にとってもうまくいきませんでした。私はデータベース言語がかなり新しいので、私は他の答えが誤解されていると思う。だからあなたの助けが必要です。

おかげで

+0

'[PetID]'列は 'identity'列です。また、その列にもデータを挿入しようとしています。ただそれを削除します。 – Wanderer

+0

u Identy列にデータを挿入する必要はありません。 – Avi

+0

[テーブルのID列の明示的な値は、列リストが使用され、IDENTITY \ _INSERTがSQL Serverに設定されている場合にのみ指定できます](http://stackoverflow.com/questions/2005437 /明示的な値のための明示的な値テーブルの列に指定できる場合-a) – Wanderer

答えて

1

自動インクリメントのために使用されています。 identity(1,1)は、列の開始値が1になり、1だけ増分されることを意味します。たとえば、identity(5,2)は5で値を開始し、2で増分します。この列を設定するための明示的な値を指定する必要がある場合、自動的に一意の値が割り当てられます。

MySQLではあなたはAUTO_INCREMENT

を使用することができます詳細については、W3Schoolsのページを参照してください(行の削除を製作中含む)行/編集テーブルを追加するsql autoincrement

2

PetIDはあなたがONに「IDENTITY_INSERT」オプションを設定しない限り、あなたはその列に挿入するために値を指定することはできませんので、IDENTITYとして定義されます。

あなたは2つのオプションがあります。

  • いけない、その列/値を指定すると、SQLがあなたのためにそれを生成してみましょう。
  • INSERT操作の前にIDENTITY_INSERTをONに設定します。 SQL Serverのアイデンティティ
0

もう一つの非常にクールな方法には、Microsoft SQL管理Studio Expressを使用することです。私は何年もSQLを学ぶまで、これについては知らなかった。基本的にツリー構造を左に展開し、表を右クリックして「表の編集」を選択します。 SQLをもっと使いこなす場合は、ここでストアドプロシージャを編集し、それ以外のSQLを考えてみてください。

私は、実際のデータベース名をぼかしてきましたが、これはあなたにそれの要点を与える: -

enter image description here

+0

ありがとうございます。私のプロジェクト用のVisual Studioで、どこかをクリックしてこのようなことができるかどうかを調べようとしましたが、Visual Studioでこれを見つけられませんでした。私は当初、SQL Server Management Studio自体ですべてのSQL関連を実行したいと思っていましたが、インストールには問題がありましたので、Visual Studioにあったものを先に進めました。 –

+0

個人的には、毎日行を挿入しない限り、毎回sqlコマンドを検索する必要があります。しかし、私はUPDATEコマンドの学習がもっと記憶に残ることが分かりました。あなたがバックアップに戻ってBEGIN ROLLBACKについて学び、UPDATEをコミットする前に影響を受ける行の数を知ることができない限り、UPDATEを元に戻す方法はありません。 – MasterSQL

関連する問題