2009-09-18 7 views
0

J'utilise Sql server 2005.Insérer uniquement lorsque les enregistrements n'existent pas dans la table

Je dois donner un script d'insertion SQL à mon client. Mais avant de l'insérer dans la table. Je veux vérifier si ces enregistrements existent déjà dans la table, il ne devrait pas insérer.

Voici la requête d'insertion

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) 

Le tableau tblStatus a quatre champs id, type, nom, displayorder. Dans lequel ID est générée automatiquement.

Aidez s'il vous plaît!

Merci.

Cordialement, MS

Répondre

1

est la manière la plus simple existe non déclaration, quelque chose comme ce qui suit devrait travailler pour vous

Note À moins que je suis malentendu votre schéma, je pense que vous êtes absent quelques citations autour des colonnes Nom et type, je les ai inclus ci-dessous

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 
+0

Merci, mec! Pour votre aide! –

0

Créer un index unique basé sur les éléments que vous ne voulez pas insérer, vous pouvez avoir plusieurs colonne unique index qui devrait aider. Et si vous recherchez ce script comme temporaire et utilisez-le une seule fois, vous pouvez créer un index et supprimer l'index ultérieurement. Cet index empêchera la ré-entrée des éléments existants.

Questions connexes