2016-11-14 80 views
0

我正在使用Visual Studio 2015數據庫項目來嘗試將行插入到已由項目創建的數據庫表中。 Insert sql在SSMS中的同一個表中工作,但不在通過項目運行時工作。爲什麼此插入語句與表格不匹配?

我得到的錯誤: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

我認爲這是一些其他的插入語句,或者您在構建查詢時錯誤地放置了項目中的括號 –

+0

您的表是否有觸發器? –

+0

@ChrisPratt這應該給我兩行。 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 

你的問題是你試圖插入兩個值到一列。嘗試在[名稱]中插入「用戶」和「產品格式」將反饋錯誤,因爲它需要產品格式的目標。更新你的插入語句以包括第二列,它應該去。

+2

我相信這是一次插入多行的有效語法。你用'VALUES('User','Product Format')'混淆了它。 –

+0

儘管兼容性或數據庫級別設置可能會使其將VALUES('User'),('Product Format')'解釋爲VALUES('User','Product Format')',可能值得OP 。 –

+1

聲明沒有任何問題。 – Eric

1

最後,在這裏有一條評論意味着這可能是我項目生成的整個腳本的其他部分的問題。事實證明是這樣的。我現在已經解決了這個問題,並且原始問題中的代碼沒有變化。

不幸的是,我不知道,大腳本的哪一部分是罪魁禍首,因爲我必須經過並做出一些其他更改才能使所有內容順利運行,但似乎沒有任何變化在我原來的問題中SQL的問題。

相關問題