2009-11-04 5 views

Répondre

3

Juste un exemple:

IF @a <= 0 
BEGIN 
    UPDATE table SET counter = @a, name = 'Minati' 
END 
ELSE 
BEGIN 
    UPDATE table SET name = 'Minati' 
END 
9

Vous pouvez utiliser un case pour contrôler si vous attribuez une nouvelle valeur ou conserver la valeur ancienne.

update <sometable> 
set field = case when <condition> then <newvalue> else field end 
where <condition> 

Exemple:

update questions 
set reply = case when @input is not null then @input else reply end 
where answer = 42 
+1

ISNULL (@input, champ)? – devio

+0

@devio: Oui, pour le cas spécifique où la condition est une vérification de null, la fonction isnull peut être utilisée à la place d'un cas, mais je voulais montrer le cas car il peut être utilisé pour n'importe quel type de condition. :) – Guffa

+0

@Guffa: +1 pour cela étant aussi ma solution préférée. Peut-être devriez-vous éditer votre réponse et remplacer "@input n'est pas nul" par "" pour clarifier que la mise à jour du champ se produira si certaines conditions s'appliquent, indépendamment de @input. –

3

Peut être que vous pouvez construire la condition dans la commande de mise à jour et exécuter facilement plus d'une mise à jour avec les conditions de diférentes. Ce n'est peut-être pas la façon la plus élégante, mais elle est prudente. Cela dépend de vos besoins.

UPDATE table SET field=value WHERE <<condition>> 
UPDATE table SET field=value2 WHERE <<condition2>> 
6

Utilisation déclaration de cas dans la clause de mise à jour

comme

Déclaration SQL # 6

UPDATE titles 
     SET price = 
       CASE 
        WHEN (price < 5.0 AND ytd_sales > 999.99) 
            THEN price * 1.25 
        WHEN (price < 5.0 AND ytd_sales < 1000.00) 
            THEN price * 1.15 
        WHEN (price > 4.99 AND ytd_sales > 999.99) 
            THEN price * 1.2 
        ELSE price 
       END 

Extrait de SQL SERVER UPDATE

vous pouvez aussi aller avec la déclaration if..else

Si vous auriez été dans SQL Server 2008, vous pourriez avoir recours à la saveur de l'instruction MERGE

Questions connexes