2009-12-02 3 views
4

Je travaille sur du SQL hérité et l'auteur a délimité chaque nom de colonne et chaque déclaration de type de données. Voir ce qui suit:Les identificateurs délimités sont-ils considérés comme une "meilleure pratique" dans Transact-SQL?

 
CREATE TABLE SomeTable (
    [SomeDate] [datetime] NOT NULL, 
    [SomeInt] [int]  NOT NULL, 
    [SomeString] [nvarchar] NOT NULL 
) ON [PRIMARY] 
GO 

Est-ce considéré comme une meilleure pratique lors de l'écriture de T-SQL pour SQL Server? Puisque je maintiens maintenant ce code, devrais-je continuer la pratique?

+1

C'est embêtant. –

Répondre

12

Personnellement, j'écrirais uniquement cela si vous utilisez des mots-clés réservés comme noms de colonnes/tables, ce qui ne devrait pas être le cas. Personnellement je pense autrement, cela rend le code SQL moins "propre" et un peu plus difficile à lire.

Ce style est généralement ce qui est généré par les outils SQL, car il garantit qu'il n'y aura aucun problème avec les conflits de mots réservés.

+4

[Et] [it] [aussi] [fait] [it] [beaucoup] [plus difficile] [à] [tapez] [dans] [votre] [code] –

+0

D'accord avec vous deux ... code d'encombrement et bollix up double-click-select-too – gbn

+0

Eh bien ... nous utilisons un ORM, donc il n'y a pas de code SQL dans notre code de production et je n'ai pas à m'inquiéter de l'encombrement.Donc, je n'écris que SQL une fois dans une lune bleue; Cependant, nous écrivons les scripts de création et de modification d'objets de base de données à la main et les gardons dans le contrôle de version, donc je veux m'assurer qu'ils sont à la hauteur. –

4

Si le nom de la table ou de la colonne est "inoffensif" comme "SomeInt", les crochets [...] ne sont pas obligatoires. Vous ne pouvez pas les spécifier si vous le souhaitez. Par contre, en utilisant toujours ceux-ci, on s'assurera que même les noms de colonnes "dangereux" comme '[Message]' et autres, ou les noms de colonnes avec des espaces comme [Product Name], seront toujours traités correctement. Donc, vous ne devez pas continuer à le faire, mais je pense que c'est une bonne pratique et si elle est déjà utilisée, je vous recommande de continuer à l'utiliser.

+1

+1: Maintenir les pratiques actuelles est une bonne chose - ce n'est probablement pas seulement vous qui manipulez ce genre de choses. –

0

La plupart des outils MS avec lesquels j'ai travaillé génèrent automatiquement SQL (l'ancien Analyseur de requêtes, Management Studio, etc.). Cela ne fait pas de mal.

0

Le [SomeName] est ce qui est produit par les scripts générés automatiquement à partir de SQL Server Management Studio. Personnellement, je trouve cela distrayant et rend les noms plus difficiles à lire.

La seule véritable utilisation pour eux est de permettre des espaces dans les identifiants.

à-dire

create table SomeTable 
(
    [some var] int 
) 

est valide (bien que pas souhaitable), tandis que

create table SomeTable 
(
    some var int 
) 

est invalide. Il serait donc utile de porter/maintenir des projets hérités.

0

Commençons tout juste par mssql/t-sql et la solution peut-être utiliser des guillemets simples lorsque cela est nécessaire car cela couvre à la fois le style carré décoché et le nouveau style de double guillemets. Citez-moi si j'ai tort!

Un exemple simple.

1> sp_help sys.tables 
2> go 
Msg 102, Level 15, State 1, Server 
Incorrect syntax near '.'. 
1> sp_help 'sys.tables' 
2> go 
Name       Owner 
------------------------------ ---- 
tables       sys 
etc 
Questions connexes