Visual Studio 2015データベースプロジェクトを使用して、プロジェクトによって作成されたデータベーステーブルに行を挿入しようとしています。 Insert sqlは、SSMSの同じテーブルで動作しますが、プロジェクト経由では動作しません。このinsert文がテーブルと一致しないのはなぜですか?
私はエラーを取得する:Column name or number of supplied values does not match the table definition.
TSQL挿入スクリプト:
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
(DBプロジェクトの)テーブル定義:
CREATE TABLE [dbo].[PricingGroupTypes] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (250) NOT NULL,
CONSTRAINT [PK_PricingGroupTypes] PRIMARY KEY CLUSTERED ([Id] ASC)
);
(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
同じスクリプト内の他の挿入は失敗しないようですが、実行後にデータベースが空になるようにスクリプト全体がロールバックされます。そして、私が言ったように、まったく同じスクリプトがSQL Server Management Studioで実行されます。
私は行方不明のVisual Studioの設定がありますが、これはプロジェクト全体のスクリプトの中で最も単純なものですから、なぜ私が困惑しているのか分かります。
私はそれが他のInsertステートメントであると思うか、クエリをビルド中にプロジェクト内のブラケットを間違って配置したと思います。 –
テーブルにトリガがありますか? –
@ChrisPrattそれは私に2つの行を与える必要があります。 ID列はデータベースによって生成されるので、私が与えなければならないのは名前です。 – Matt