Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Пользовательский тип данных с значением по-умолчанию...  [new]
JaneKate
Member

Откуда:
Сообщений: 81
Здравствуйте!

Вот столкнулся с проблемкой.
Нужно определить свой тип данных с значением по-умолчанию, все бы хорошо, но вот MSDN не рекомендует использовать хп sp_addtype, поскольку в будущих версиях поддерживатся она уже не будет и т.д.

Как же обойтись без нее? Как-то не очень хочется прописывать дефалтовские значения в каждой таблице.

Хотелось бы сделать вот так:

CREATE TYPE TUSERNAME
FROM NVARCHAR(20) NOT NULL DEFAULT N'Вася'

,
но не тут-то было:

Не правильный синтаксис возле DEFAULT...
12 май 11, 15:11    [10642103]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
слу..ну честно - ненадо делать свой типе данных такого вида - больше мороки от такого,чем реального выиграша
12 май 11, 15:13    [10642134]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
Glory
Member

Откуда:
Сообщений: 104751
JaneKate
но вот MSDN не рекомендует использовать хп sp_addtype, поскольку в будущих версиях поддерживатся она уже не будет и т.д.

Как же обойтись без нее? Как-то не очень хочется прописывать дефалтовские значения в каждой таблице.

А где тут
sp_addtype [ @typename = ] type, 
    [ @phystype = ] system_data_type 
    [ , [ @nulltype = ] 'null_type' ] ;
возможно определение default значения ?
12 май 11, 15:18    [10642183]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
JaneKate
Member

Откуда:
Сообщений: 81
Glory
JaneKate
но вот MSDN не рекомендует использовать хп sp_addtype, поскольку в будущих версиях поддерживатся она уже не будет и т.д.

Как же обойтись без нее? Как-то не очень хочется прописывать дефалтовские значения в каждой таблице.

А где тут
sp_addtype [ @typename = ] type, 
    [ @phystype = ] system_data_type 
    [ , [ @nulltype = ] 'null_type' ] ;
возможно определение default значения ?


Ой, конечно же sp_bindefault :)
12 май 11, 15:37    [10642359]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
У меня сложилось впечатление, что с пользовательскими типами в TSQL лучше вообще не связываться.
Нет абсолютно никакой пользы.
За исключением типа табличной переменной для передачи параметра в процедуру или функцию (SQL2008)
12 май 11, 15:46    [10642452]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
JaneKate
Member

Откуда:
Сообщений: 81
Maxx
слу..ну честно - ненадо делать свой типе данных такого вида - больше мороки от такого,чем реального выиграша


А что лучше везде где это нужно прописывать необходимые инструкции. По-моему лучше один раз написать... ну да ладно, а в каком тогда виде создавать UDT?
12 май 11, 15:50    [10642489]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31964
JaneKate
а в каком тогда виде создавать UDT?
Лучьше их не использовать.
12 май 11, 15:52    [10642502]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
JaneKate
Member

Откуда:
Сообщений: 81
alexeyvg
JaneKate
а в каком тогда виде создавать UDT?
Лучьше их не использовать.


Почему????????
12 май 11, 15:53    [10642523]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
JaneKate,

вам уже 3й человек советует не делать своих типов , тем более такого вариантра..задумайтесь,кроме гимммора с подержанием и сопровождением - ниче хорошо,вы себе предтавте что прийдеться делать,если у вас 10 таблиц в которых 5 полей такого типа ...и вдруг вы осознали что размерность вашего типа неправильная и вам его надо измениеть ??? Честно кроме мучений от етих типов - пользы нет,ИМХО
12 май 11, 15:56    [10642548]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
JaneKate
Member

Откуда:
Сообщений: 81
Maxx
JaneKate,

вам уже 3й человек советует не делать своих типов , тем более такого вариантра..задумайтесь,кроме гимммора с подержанием и сопровождением - ниче хорошо,вы себе предтавте что прийдеться делать,если у вас 10 таблиц в которых 5 полей такого типа ...и вдруг вы осознали что размерность вашего типа неправильная и вам его надо измениеть ??? Честно кроме мучений от етих типов - пользы нет,ИМХО


Именно так и есть!!!

Все правильно, с использыванием своих типов мне нужно только в одном месте переопределить размерность, а без них - в 50-ти (10*5 = 50)!

Вот имею пример скрипта создания крммерческой базы данных на FB, так там вообще все тривиально:

CREATE DOMAIN TBOOLEAN AS
BIGINT
DEFAULT 0
NOT NULL
CHECK (VALUE BETWEEN 0 AND 1);

Короче, доктор сказал в морг - значит в морг...
12 май 11, 16:06    [10642666]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
Glory
Member

Откуда:
Сообщений: 104751
JaneKate

Все правильно, с использыванием своих типов мне нужно только в одном месте переопределить размерность, а без них - в 50-ти (10*5 = 50)!

Да что вы говорите
А если не секрет, то какой командой/процедурой вы собрались "переопределить размерность" созданного UDT ?
12 май 11, 16:13    [10642724]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
JaneKate
Member

Откуда:
Сообщений: 81
Тут парню вообще тригеры советуют... Ну, а че, так ведь проще, на каждую табличку по тригеру, эээх!

Короче, видать, нет такой возможности и не предвидится...
12 май 11, 16:14    [10642729]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
CREATE TYPE dbo.SSN
FROM varchar(11) NOT NULL ;


create table dbo.test (
 i SSN
)

drop type dbo.SSN

Msg 3732, Level 16, State 1, Line 1
Cannot drop type 'dbo.SSN' because it is being referenced by object 'test'. There may be other objects that reference this type.


а вот теперь представте,что вам надо сделать

CREATE TYPE dbo.SSN
FROM varchar(20) NOT NULL

а команды ALTER TYPE у вас таки нет.... количемство работы предтавляете на минутку
12 май 11, 16:16    [10642740]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31964
JaneKate
alexeyvg
Лучьше их не использовать.


Почему????????
Как обычно, что либо не использовать необходимо в том случае, если нету причин использовать.

Вы для начала оперделитесь с целью испольхзования.

JaneKate
Все правильно, с использыванием своих типов мне нужно только в одном месте переопределить размерность, а без них - в 50-ти (10*5 = 50)!
Так сделать не получится.
12 май 11, 16:24    [10642819]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Maxx
а вот теперь представте,что вам надо сделать
а команды ALTER TYPE у вас таки нет.... количемство работы предтавляете на минутку


все проще. старый тип переименовывается. создается новый. объекты переподнимаются. старый грохается.
12 май 11, 16:25    [10642827]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
Glory
Member

Откуда:
Сообщений: 104751
Crimean
Maxx
а вот теперь представте,что вам надо сделать
а команды ALTER TYPE у вас таки нет.... количемство работы предтавляете на минутку


все проще. старый тип переименовывается. создается новый. объекты переподнимаются. старый грохается.

Ну так "объекты переподнимаются" это и будет 10*5=50
12 май 11, 16:27    [10642839]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
каждому свое, но лично мне такой тип с дополнительными мученими задаром не нужен ,имхо...
если Вы хотите - занимайтесь,я ж не против,я просто привел наглядный аргумент - почему яб так не делал.
12 май 11, 16:31    [10642870]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Glory
Crimean
пропущено...


все проще. старый тип переименовывается. создается новый. объекты переподнимаются. старый грохается.

Ну так "объекты переподнимаются" это и будет 10*5=50


а теперь сравниваем с объемом работы по смене размерности поля без UDT
да, форсмажор, но бывает
а тут - "переподнять" == механическая работа, так как везде "прошит" UDT
12 май 11, 16:32    [10642878]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
Glory
Member

Откуда:
Сообщений: 104751
Crimean
Glory
пропущено...

Ну так "объекты переподнимаются" это и будет 10*5=50


а теперь сравниваем с объемом работы по смене размерности поля без UDT
да, форсмажор, но бывает
а тут - "переподнять" == механическая работа, так как везде "прошит" UDT

Формирование строки запуска с набором команд ALTER TABLE и его выполнение ?
12 май 11, 16:34    [10642890]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
JaneKate
Member

Откуда:
Сообщений: 81
Maxx
CREATE TYPE dbo.SSN
FROM varchar(11) NOT NULL ;


create table dbo.test (
 i SSN
)

drop type dbo.SSN

Msg 3732, Level 16, State 1, Line 1
Cannot drop type 'dbo.SSN' because it is being referenced by object 'test'. There may be other objects that reference this type.


а вот теперь представте,что вам надо сделать

CREATE TYPE dbo.SSN
FROM varchar(20) NOT NULL

а команды ALTER TYPE у вас таки нет.... количемство работы предтавляете на минутку


Да, но у меня есть GET_OBJECT() и DROP TYPE!
12 май 11, 16:39    [10642944]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31964
Crimean
Glory
пропущено...

Ну так "объекты переподнимаются" это и будет 10*5=50


а теперь сравниваем с объемом работы по смене размерности поля без UDT
да, форсмажор, но бывает
а тут - "переподнять" == механическая работа, так как везде "прошит" UDT
Да совершенно несравним объём работ - с UDT как минимум в 2 раза больше (), да и сами работы намного сложнее.

Плюс намного сложнее делать всё это без остановки работы системы.

Не говоря о других недостатках, не связанных с этими сложностями с изменением типа - например, работа с другими базами и линкед-серверами, темпдб и прочее (в общем, выход за пределы базы), работа со сторонними приложениями, которые вдруг понадобилось подключить...
12 май 11, 16:54    [10643066]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
JaneKate,

мдя... девушка (если я правильно опередели по нику) Вы знаете толк в изращениях
12 май 11, 16:55    [10643068]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Maxx
JaneKate,

мдя... девушка (если я правильно опередели по нику) Вы знаете толк в изращениях
JaneKate
Вот столкнулся с проблемкой.
12 май 11, 17:02    [10643112]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
iap,

ну не дочитал ну сорри..никакого не хотел обидеть по гендерному признаку
12 май 11, 17:21    [10643262]     Ответить | Цитировать Сообщить модератору
 Re: Пользовательский тип данных с значением по-умолчанию...  [new]
JaneKate
Member

Откуда:
Сообщений: 81
Ладно, допустим UDT плохи тем, что возникают проблемы с изменением размерности, но значение по-умолчанию ведь большого гемороя не вызывает, правда? А вопрос-то изначально был не о целесообразности использования UDT, а о другом..., а закончилось все моим пОлом... что и можно было ожидать. Спасибо всем за ответы, многие из них были действительно полезны.
12 май 11, 17:24    [10643285]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить