2010-02-16 9 views
4

Dans un déclencheur, je code comme:Définition de plusieurs variables scalaires à partir d'une seule ligne dans SQL Server 2008?

SET @var1 = (SELECT col1 FROM Inserted); 
SET @var2 = (SELECT col2 FROM Inserted); 

Est-il possible d'écrire ce qui précède dans une seule ligne? Quelque chose conceptuellement comme:

SET (@var1,@var2) = (SELECT col1,col2 FROM Inserted); 

Évidemment j'ai essayé ci-dessus, sans succès; suis-je juste coincé avec la première méthode?

Même si c'est possible, est-ce une bonne idée?

Merci!

Répondre

8

oui, utilisez la première méthode.

Ou ...

SELECT 
    @var1 = col1 
    ,@var2 = col2 
FROM 
    Inserted; 
0

Non, il est impossible. SET accepte une seule cible et une seule valeur. AUTANT QUE JE SACHE.

2

Toutefois, il s'agit d'un indicateur rouge majeur si vous prévoyez de définir des valeurs variables comme cela dans un déclencheur. Cela signifie généralement que le déclencheur est mal conçu et doit être révisé. Ce code s'attend à ce qu'il n'y ait qu'un seul enregistrement inséré et c'est quelque chose qui ne va pas être vrai dans tous les cas. Une insertion ou une mise à jour d'enregistrements multiples aura plusieurs enregistrements insérés et le déclencheur doit en tenir compte (veuillez ne pas utiliser de déclencheur !!!). Les déclencheurs ne doivent en aucun cas être écrits pour gérer uniquement les insertions/mises à jour ou suppressions à un enregistrement. Ils doivent être écrits pour gérer des ensembles de données.

Exemple pour insérer les valeurs de inséré à une autre table où le déclencheur est sur la table1:

CREATE TRIGGER mytrigger on table1 
AFTER INSERT 
AS 

INSERT table2 (field1, field2, field3) 
SELECT field1, 'test', CASE WHEN field3 >10 THEN field3 ELSE 0 END 
FROM inserted 
+0

Auriez-vous un exemple que je peux regarder pour plusieurs déclencheur d'insertion d'enregistrement? Merci. – johansson

+0

Je vois, merci. Alors, comment pourrais-je gérer cela dans un déclencheur? – johansson

+0

C'est le déclencheur de l'échantillon, pas sûr de comprendre ce que vous demandez maintenant. – HLGEM

Questions connexes