#tsql #objectname
#tsql #имяобъекта
Вопрос:
Например, может быть названо ограничение для значения по умолчанию 0 DF__tablename.columnname
.
Хотя мой поиск на предмет того, что это плохая практика, не дает результатов, в многочисленных примерах ограничений, которые я видел на SO и многих других сайтах, я никогда не замечал точки.
Ответ №1:
Использование точки в имени объекта является плохой практикой.
Не используйте символ точки в идентификаторе. Да, это можно сделать, но недостатки перевешивают любые преимущества.
tl; dr
Специальные символы, такие как точка, не допускаются в обычных идентификаторах. Если идентификатор не соответствует правилам для обычного идентификатора, то ссылки на идентификатор должны быть заключены в квадратные скобки (или двойные кавычки ANSI).
Что касается точки (символа точки), то ее использование в идентификаторе недопустимо в обычном идентификаторе; но ее можно использовать в квадратных скобках.
Символ точки является еще более специальным символом в SQL; он используется для отделения идентификатора от предыдущего квалификатора.
SELECT mytable.mycolumn FROM mytable
Мы могли бы также записать это как
SELECT [mytable].[mycolumn] FROM mytable
Мы могли бы также написать
SELECT [mytable.mycolumn] FROM mytable
но это означает нечто совсем другое. При этом мы ссылаемся не на столбец с именем mycolumn
, а на идентификатор, содержащий символ точки.
SQL Server прекрасно справится с этим.
Но если мы сделаем это и начнем использовать символ точки в наших идентификаторах, мы вызовем путаницу и разочарование у будущих читателей. Любая выгода, которую мы получили бы от использования символов точки в идентификаторах, будет намного перевешиваться недостатками для других.
Аналогично, почему мы не создаем таблицы с именами WHERE (1=1) OR
или столбцы с именами SUBSTR(foo.bar,1,10)
, чтобы избежать таких чудовищ, как
SELECT [SUBSTR(foo.bar,1,10)] FROM [WHERE (1=1)] OR]
Который может быть допустимым SQL, но это очень расстроит будущих читателей и заставит их проклинать нас, наших потомков и близких. Не заставляйте их делать это. Из любви ко всему, что есть хорошего и красивого в этом мире, не используйте символы точки в идентификаторах.
Ответ №2:
Совершенно допустимо иметь точки в именах объектов. Однако для этого требуется заключать имя объекта в квадратные скобки при обращении к нему. В случае, если вы забудете эти квадратные скобки, вы получите несколько сообщений об ошибках, которые могут быть менее понятны неопытному разработчику. По этой причине я рекомендую не использовать точки в именах объектов. Я бы также предположил, что это основная причина, по которой вы не часто видите примеры точек в названиях объектов в Интернете.
В вашем примере вы могли бы использовать другое подчеркивание вместо точки, вот так: DF__tablename_columnname