我正在使用Visual Studio 2015数据库项目尝试将行插入到项目创建的数据库表中。 Insert sql在SSMS中的同一个表中工作,但在通过项目运行时不起作用。
我收到错误: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
TSQL插入脚本:
CREATE TABLE [dbo].[PricingGroupTypes] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (250) NOT NULL,
CONSTRAINT [PK_PricingGroupTypes] PRIMARY KEY CLUSTERED ([Id] ASC)
);
表定义(在DB项目中):
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
表定义(通过ssms):
Add
同一脚本中的其他插入似乎没有失败,但整个脚本将回滚,因此数据库在执行后为空。并且,就像我说的,当我在SQL Server Management Studio中运行时,完全相同的脚本工作。
也许我缺少一些Visual Studio设置,但这是关于整个项目中最简单的脚本,所以你可以看到我为什么感到困惑。
答案 0 :(得分:1)
最后,这里有一条评论暗示这可能是项目生成的整个脚本的其他部分的问题。事实证明是这样的。我现在已经解决了这个问题,原始问题中的代码没有改变。
不幸的是,我不知道,大型剧本的其他部分是罪魁祸首,因为我必须经历并做出一些其他改动以使一切顺利进行,但似乎没有任何问题在原始问题中使用SQL。
答案 1 :(得分: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
您的问题是您尝试将两个值插入一列。尝试在[名称]中插入“用户”和“产品格式”将导致错误,因为它需要产品格式的目的地。更新你的insert语句以包含第二列,它应该去。