我正在使用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設置,但這是關於整個項目中最直接的腳本,所以你可以看到爲什麼我很困惑。
我認爲這是一些其他的插入語句,或者您在構建查詢時錯誤地放置了項目中的括號 –
您的表是否有觸發器? –
@ChrisPratt這應該給我兩行。 ID列是由數據庫生成的,所以我必須給出的是名稱。 – Matt