我正在阅读一本教程,并从一本书中学习MVC,在那里我被告知使用这个脚本创建一个表,我做了。但现在我想在我的Pet表中添加一整行,但我无法做到。
用于创建所有表格的脚本。
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表的第一行添加一些随机值(用于测试)。 这是Pet表格的第一行作为图像以进一步清晰。
我尝试使用此脚本向表中添加值。
INSERT INTO Pet VALUES ('1', 'Fido', '12', '4', '1', '12/07/2004', 'New York', 'nothing', '1')
但是我说错误
表格中的标识列的显式值' Pet'只能在使用列列表且IDENTITY_INSERT为ON时指定。
现在我对SQL很新,我无法解决这个问题。我看了其他SO答案,人们对SET IDENTITY_INSERT
说了些什么,但这对我也没有用。我相信我误解了其他SO答案,因为我对数据库语言还不熟悉。需要你的帮助。
由于
答案 0 :(得分:2)
PetID被定义为IDENTITY,因此除非将“IDENTITY_INSERT”选项设置为ON,否则无法在该列中指定INSERT值。
您有两种选择:
答案 1 :(得分:1)
在SQL Server中标识用于自动增量。 identity(1,1)表示列的起始值为1,并将增加1.您可以将其更改为所需的值,例如identity(5,2)将值从5开始,并以2递增。需要指定一个显式值来设置此列,它将自动分配一个唯一值。
在mysql中你可以使用AUTO_INCREMENT
有关详细信息,请参阅w3schools页面sql autoincrement
答案 2 :(得分:0)