我正在使用Sql server 2005。
我必须向我的客户端提供SQL插入脚本。但在插入表格之前。我想检查表中是否已存在记录,不应插入。
以下是插入查询
INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder]) VALUES (UsageLevel,High,1)
INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder]) VALUES (UsageLevel,Medium,2)
INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder]) VALUES (UsageLevel,Low,3)
表 tblStatus 有四个字段id,type,name,displayorder。其中 ID 是自动生成的。
请帮忙!
感谢。
最诚挚的问候, MS
答案 0 :(得分:1)
最简单的方法是不存在语句,类似下面的内容应该适合你
注意除非我误解了您的架构,否则我认为您错过了名称和类型列的一些引号,我将它们包含在
下面if not exists (
SELECT NULL as test FROM dbo.tblStatus
WHERE [Type] = 'UsageLevel' AND [Name] = 'High'
)
BEGIN
INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder])
VALUES ('UsageLevel','High',1)
END
if not exists (
SELECT NULL as test FROM dbo.tblStatus
WHERE [Type] = 'UsageLevel' AND [Name] = 'Medium'
)
BEGIN
INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder])
VALUES ('UsageLevel','Medium',2)
END
if not exists (
SELECT NULL as test FROM dbo.tblStatus
WHERE [Type] = 'UsageLevel' AND [Name] = 'Low'
)
BEGIN
INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder])
VALUES ('UsageLevel','Low',3)
END
答案 1 :(得分:0)
根据您不想插入的项创建唯一索引,您可以拥有应该有用的多列唯一索引。如果您将此脚本视为临时脚本并且只使用一次,则可以稍后创建索引和删除索引。该索引将阻止重新输入现有项目。