2016-11-14 16 views
0

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の設定がありますが、これはプロジェクト全体のスクリプトの中で最も単純なものですから、なぜ私が困惑しているのか分かります。

+0

私はそれが他のInsertステートメントであると思うか、クエリをビルド中にプロジェクト内のブラケットを間違って配置したと思います。 –

+0

テーブルにトリガがありますか? –

+0

@ChrisPrattそれは私に2つの行を与える必要があります。 ID列はデータベースによって生成されるので、私が与えなければならないのは名前です。 – Matt

答えて

0
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 

問題は、1つの列に2つの値を挿入しようとしていることです。 [User]と[Product Format]を[Name]に挿入しようとすると、製品フォーマットの宛先が必要なためエラーが返されます。 insert文を更新して2番目のカラムをインクルードしてください。

+2

これは、一度に複数の行を挿入するための有効な構文だと思います。あなたは 'VALUES( 'User'、 'Product Format')'と混同しています。 –

+0

おそらく、互換性やDBレベルの設定では、VALUES( 'User')、( 'Product Format') 'をVALUES( 'User'、 'Product Format') 'として解釈できます。 。 –

+1

このステートメントには何も問題はありません。 – Eric

1

最後に、プロジェクトによって生成された私の全体的なスクリプトの他の部分の問題かもしれないことを示唆するコメントがありました。これは事実であることが判明しました。私は今問題を解決し、元の質問のコードは変更されていません。

残念なことに、すべてのスクリプトをスムーズに実行するためにいくつかの変更を加えなければならなかったので、大きなスクリプトのどの部分が犯人であったかは分かりませんが、私の元の質問のSQLの問題。

関連する問題