2009-10-03 7 views
0

Après des années d'utilisation de TSQL, je n'arrive toujours pas à déterminer quand utiliser SET, WITH ou ENABLE.Conventions/modèles SQL Server TSQL sur SET, WITH et ENABLE

Lorsque vous lisez la déclaration TSQL comme,

ALTER TABLE Person.Person 
ENABLE CHANGE_TRACKING 
WITH (TRACK_COLUMNS_UPDATED = ON); 

Il semble plus intuitif et facile à lire, si elle a été écrite comme (requête non valide ci-dessous),

ALTER TABLE Person.Person 
SET CHANGE_TRACKING = ON, 
    TRACK_COLUMNS_UPDATED = ON 

Je suis toujours se confondre entre quand utilisez les options SET, ENABLE ou WITH

Quand ces options sont-elles utilisées dans TSQL? TSQL est-il simplement incohérent?

Répondre

1

SET est seulement utilisé:

  1. Comme une déclaration autonome pour modifier une valeur de variables, ou ..

  2. .. de modifier certains paramètres de connexion.

  3. Ou, en tant que clause de l'instruction DML, UPDATE.

ENABLE est que jamais une clause de DDL ou déclarations DAL

AVEC est toujours une clause dépendante d'autres déclarations (bien que cela est source de confusion pour savoir où il est une clause dépendante préfixant de CTE)

Donc, SET devrait être clair, cependant, il ne semble pas y avoir de règle cohérente à propos de WITH vs ENABLE.

+0

@RBarry: Merci, je ne vois aucune cohérence dans le nommage du serveur SQL. Je suppose que c'est quelque chose que je viens de sucer et de mémoriser ... C'est juste ennuyeux que je viens de repérer "ALTER DATABASE AdventureWorksLT SET ALLOW_SNAPSHOT_ISOLATION ON;" où l'instruction utilise le verbe "ALLOW" dans l'option au lieu de "enable" ... Cela devient incontrôlable. – Sung