2016-07-22 5 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') 

Но я получил ошибку говоря

явное значение для столбца идентификаторов в таблице «Pet» может быть только тогда, когда список столбцов используется и IDENTITY_INSERT включен.

Теперь я довольно новичок в SQL и не могу понять это. Я посмотрел на другие ответы SO, где люди говорили что-то о SET IDENTITY_INSERT, но это не сработало для меня. Я считаю, что неправильно понял другой ответ SO, так как я довольно новичок в языках баз данных. Так что нужна ваша помощь.

Благодаря

+0

'[PetID]' столбец является 'identity' столбец. И вы также пытаетесь вставить данные в этот столбец. Просто удалите его. – Wanderer

+0

u не нужно вставлять данные в столбец Identy – Avi

+0

Возможный дубликат [Явное значение для столбца идентификации в таблице может быть указано только при использовании списка столбцов, а IDENTITY \ _INSERT - в SQL Server] (http://stackoverflow.com/questions/2005437/an-explicit-value-for-identity-column-in-table-can-only-be-defined-when-a) – Wanderer

ответ

1

В SQL Server идентичность используется для Autoincrement. identity (1,1) означает, что начальное значение для столбца будет равно 1 и будет увеличено на 1. Вы можете изменить его на желаемое значение, например, идентификация (5,2) начинает значение с 5 и увеличивается на 2. Вы не необходимо указать явное значение для установки этого столбца, ему автоматически будет присвоено уникальное значение.

В MySQL вы можете использовать AUTO_INCREMENT

См w3schools страницу для деталей sql autoincrement

2

PetID определяется как IDENTITY, так что вы не можете указать значение для вставки в этой колонке, если вы установите опцию «IDENTITY_INSERT» в положение ON.

У вас есть два варианта:

  • Dont указать, что столбец/значение, и пусть SQL создать его для вас.
  • Установите IDENTITY_INSERT в положение ON перед операцией INSERT.
0

Еще один очень хороший способ, чтобы добавить строки/редактирования таблицы (в том числе editting удаление строк) заключается в использовании Microsoft SQL Management Studio Express. Я не знал об этом, пока я не изучал SQL в течение многих лет. В основном раскройте древовидную структуру слева, щелкните правой кнопкой мыши на таблице и выберите «Редактировать таблицу». Когда вы переходите к SQL больше, вы можете редактировать хранимые процедуры здесь и в значительной степени что-нибудь, что SQL-код, о котором вы можете подумать.

Я размыто фактические имена баз данных, но это дает вам суть его: -

enter image description here

+0

Спасибо за ваш ответ, но я использовал Visual Studio для моего проекта и попытался посмотреть, могу ли я сделать что-то подобное, щелкнув в любом месте, но не смог найти ничего подобного в Visual Studio. Я изначально хотел сделать все, что связано с SQL, в самой SQL Server Management Studio, но не удалось его установить, поэтому я просто пошел вперед с тем, что было в Visual Studio. –

+0

Лично я считаю, что если вы не вставляете строки каждый день, мне всегда нужно каждый раз искать команду sql. Но я считаю, что изучение команды UPDATE более запоминающееся. Невозможно отменить UPDATE, хотя, если вы не вернетесь к резервному копированию, также узнайте о BEGIN ROLLBACK, чтобы вы поняли, сколько строк вы будете влиять, прежде чем совершать UPDATE. – MasterSQL

Смежные вопросы