Ich verwende ein Visual Studio 2015-Datenbankprojekt, um zu versuchen, Zeilen in Datenbanktabellen einzufügen, die vom Projekt erstellt wurden. Der Insert-SQL funktioniert in der gleichen Tabelle in SSMS, aber nicht, wenn er über das Projekt ausgeführt wird.Warum stimmt diese Einfügeanweisung nicht mit der Tabelle überein?
ich den Fehler: Column name or number of supplied values does not match the table definition.
TSQL Insert-Skript:
if not exists (select top 1 1 from [dbo].[PricingGroupTypes]) begin
INSERT INTO [dbo].[PricingGroupTypes]
([Name])
VALUES
('User')
,('Product Format')
print 'Pricing Group Types added'
end
Tabellendefinition (in DB-Projekt):
CREATE TABLE [dbo].[PricingGroupTypes] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (250) NOT NULL,
CONSTRAINT [PK_PricingGroupTypes] PRIMARY KEY CLUSTERED ([Id] ASC)
);
Tabelle Definition (über SSMS):
USE [Toyland]
GO
/****** Object: Table [dbo].[PricingGroupTypes] Script Date: 11/14/2016 11:05:05 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PricingGroupTypes](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](250) NOT NULL,
CONSTRAINT [PK_PricingGroupTypes] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Andere Einfügungen im selben Skript scheinen nicht zu versagen, aber das gesamte Skript wird zurückgesetzt, sodass die Datenbank nach der Ausführung leer ist. Und, wie ich schon sagte, das gleiche Skript funktioniert, wenn ich es in SQL Server Management Studio ausführen.
Vielleicht gibt es einige Visual Studio-Einstellung, die ich vermisse, aber das ist über die einfachste Bit des Skripts im gesamten Projekt, so können Sie sehen, warum ich perplex bin.
Ich denke, es ist eine andere Insert-Anweisung, oder Sie haben die Klammern in Ihrem Projekt beim Erstellen der Abfrage verlegt –
Hat Ihre Tabelle einen Trigger? –
@ChrisPratt Das sollte mir zwei Zeilen geben. Die ID-Spalte wird von der Datenbank generiert, daher muss ich nur den Namen angeben. – Matt