2016-07-22 62 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]) 
    ); 

我想添加一些隨機值(用於測試)爲我的寵物表的第一行。 這是寵物表的第一行作爲圖像,以進一步清晰。

enter image description here

我嘗試使用該腳本將值添加到我的餐桌。

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

但我得到一個錯誤說

表「寵物」的標識列的顯式值時,使用的列列表只能指定並IDENTITY_INSERT爲ON。

現在我對SQL很陌生,我無法弄清楚這一點。我看了其他的答案,其中人們說了一些關於SET IDENTITY_INSERT的內容,但是這對我也不起作用。我相信我誤解了其他的答案,因爲我對數據庫語言相當陌生。所以需要你的幫助。

感謝

+0

'[PetID]'列是'identity'列。並且您正嘗試將數據插入到該列中。只要刪除它。 – Wanderer

+0

u不需要在Identy列中插入數據 – Avi

+0

可能的重複[只有在使用列列表並且IDENTITY \ _INSERT爲ON的情況下才能指定表中的標識列的顯式值SQL Server]/questions/2005437/an-explicit-value-for-the-identity-column-in-table-can-only-be-specified-when-a) – Wanderer

回答

1

在SQL Server 身份用於自動增量。標識(1,1)表示列的起始值爲1,並將增加1.您可以將其更改爲期望值,例如標識(5,2)在5處開始值並以2遞增。您無需要指定一個明確的值來設置這個列,它會自動分配一個唯一的值。

在MySQL中,你可以使用AUTO_INCREMENT

參考W3Schools的頁的詳細sql autoincrement

2

PetID被定義爲IDENTITY所以,除非你設置「IDENTITY_INSERT」選項設置爲ON,你不能指定值在該列插入。

你有兩個選擇:

  • 不要指定列/價值,讓SQL生成它。
  • 設置IDENTITY_INSERT在您的INSERT操作之前。
0

另一種非常冷靜的方式來添加行/編輯表(包括EDITTING刪除行)是使用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命令更加令人難忘。沒有辦法扭轉UPDATE,除非你回去備份,所以也要了解BEGIN ROLLBACK,這樣你就可以知道在提交UPDATE之前你會影響多少行。 – MasterSQL