J'essaie d'entrer par programme des valeurs dans mon tableau.
Je ne peux pas utiliser de droites @ variables variables. Je dois utiliser le mot-clé Values.
Comment puis-je créer une clause where lors de l'utilisation de Values dans l'insertion dans.
J'essaie d'éviter les doublons
DECLARE @MyID INT
DECLARE @Phone varchar(10)
DECLARE @MyDATE DateTime
DECLARE @Agent as varchar(50)
DECLARE @Charge as varchar(50)
DECLARE @Vendor as varchar(50)
SET @MyID = 215199999
SET @Phone = '9999999999'
SET @MyDATE = '2010-12-04 11:56:12.000'
SET @Agent = 'fbrown'
SET @Charge = 'NO'
SET @Vendor = 'NO'
INSERT INTO [MyDB].[dbo].[Accounts]
(MyID,Phone,MyDate,Agent,Charge,Vendor)
VALUES (
@MyID
,@Phone
,@MyDATE
,@Agent
,@Charge
,@Vendor
) WHERE MyID NOT IN (@MyID)
IF NOT EXISTS(SELECT 1 FROM [MyDB].[dbo].[Accounts] WHERE MyID = @MyID)
INSERT INTO [MyDB].[dbo].[Accounts]
(MyID, Phone, MyDate, Agent, Charge, Vendor)
VALUES
(@MyID, @Phone, @MyDATE, @Agent, @Charge, @Vendor)
Essayez d'utiliser
if not exists ( select top 1 * from [MyDB].[dbo].[Accounts] Where MyID = @MyID )
INSERT INTO [MyDB].[dbo].[Accounts]
(MyID,Phone,MyDate,Agent,Charge,Vendor)
VALUES (
@MyID
,@Phone
,@MyDATE
,@Agent
,@Charge
,@Vendor
)
Si vous essayez de vous assurer que la colonne MyID ne contient pas de doublons, vous avez au moins 3 choix: 1) rendez la colonne unique (créez un index sur cette colonne et déclarez-le comme unique, ou , mieux encore, une clé primaire) 2) incrémenter automatiquement la colonne. De cette façon, vous n'avez même pas besoin de lui attribuer de valeur. 4) vous pouvez utiliser la solution de Joe Stefanelli (sur ce fil). Il est convivial pour les programmeurs et vous permet d’attribuer la valeur de votre choix.
De plus, l'option Fusionner (UPSERT) est une bonne option pour une exécution unique. Dans cet exemple, le cas où la correspondance est vérifiée n'est pas rempli, mais vous pouvez ajouter l'instruction WHEN correspondante et mettre à jour les horodatages ou les compteurs.
MERGE
Accounts AS target
USING
(select @MyID as myID ) AS source
ON
target.myID = source.myID
WHEN NOT MATCHED THEN
INSERT (MyID,Phone,MyDate,Agent,Charge,Vendor)
VALUES (
@MyID
,@Phone
,@MyDATE
,@Agent
,@Charge
,@Vendor
);