Для создания таблиц вы можете сделать это:
CREATE TABLE [MY_DB].[dbo].[MY_TABLE] (
[MY_MESSAGE] varchar(255)
);
или это:
USE [MY_DB]
CREATE TABLE [dbo].[MY_TABLE] (
[MY_MESSAGE] varchar(255)
);
Я пытался создать пользовательский тип таблицы следующим образом:
CREATE TYPE [MY_DB].[dbo].[udtMY_TABLE] AS TABLE (
[MY_MESSAGE] varchar(255)
);
И я получил следующую ошибку:
The type name contains more than the maximum number of prefixes. The maximum is 1.
Простое исправление, я только что сделал это, и оно отлично работает:
USE [MY_DB]
CREATE TYPE [dbo].[udtMY_TABLE] AS TABLE (
[MY_MESSAGE] varchar(255)
);
Вопрос в том, почему для создания этого типа необходимо явно использовать USE
, а не просто [MY_DB].[dbo].[udtMY_TABLE]
?
До сих пор я думал, что USE
- это просто экономия места, предотвращающая необходимость каждый раз вводить имя базы данных. Но с таким поведением здесь я задаюсь вопросом, имеет ли оно какую-то другую цель.