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

Откуда: Урал
Сообщений: 919
Всем привет!

Мне нужно в поле дата, по умолчанию задать максимальную дату (например: 01.01.2222)
Для этой цели хочу создать значение по умолчанию.
В среде Microsoft SQL Server Management Studio:
BD/Программирование/Значения по умолчанию.

Подскажите пожалуйста, как их создавать?
21 июл 11, 14:19    [11006846]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Создавать в конструкторе таблицы лучше.

Сообщение было отредактировано: 21 июл 11, 14:20
21 июл 11, 14:20    [11006854]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
zvezda_t
Member

Откуда: Урал
Сообщений: 919
Гавриленко Сергей Алексеевич,

Просто в нужном поле прописать свойство "Значение или привязка по умолчанию"?
А так чтоб создать своё значение по умолчанию = dbo.MaxDate? Просто я хочу научиться...
21 июл 11, 14:25    [11006899]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
zvezda_t
А так чтоб создать своё значение по умолчанию = dbo.MaxDate?
Не-не-не, погодите. "Максимальная дата" - это что вообще такое?
21 июл 11, 14:27    [11006910]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
zvezda_t,

ALTER TABLE [table name]
    ADD CONSTRAINT [name] DEFAULT ((value)) FOR [field name];
21 июл 11, 14:27    [11006915]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
думаю, это 999912312 23:59:59.997
21 июл 11, 14:28    [11006926]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
BestZvit
Member

Откуда: Гоблино
Сообщений: 2250
Гавриленко Сергей Алексеевич
Не-не-не, погодите. "Максимальная дата" - это что вообще такое?


Как, что это такое ?
21.12.2012
21 июл 11, 14:30    [11006938]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
zvezda_t
Member

Откуда: Урал
Сообщений: 919
максимальная дата для меня 01.01.2222
21 июл 11, 14:30    [11006939]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
zvezda_t
максимальная дата для меня 01.01.2222
Ну так и пропишите это значение.
21 июл 11, 14:31    [11006946]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
zvezda_t
Гавриленко Сергей Алексеевич,

Просто в нужном поле прописать свойство "Значение или привязка по умолчанию"?
А так чтоб создать своё значение по умолчанию = dbo.MaxDate? Просто я хочу научиться...
Объекты DEFAULT давно объявлены устаревшими.
http://msdn.microsoft.com/ru-ru/library/ms173565(v=SQL.100).aspx
Microsoft периодически обещает их выкинуть.
А жаль. Очень удобная штука. Объявил - и присоединяй к нужным полям в разных таблицах.

Законный способ сегодня - добавлять констрейнт DEFAULT для поля в каждой таблице, где это необходимо.
http://msdn.microsoft.com/ru-ru/library/ms191289(v=SQL.100).aspx
21 июл 11, 14:32    [11006962]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Зайцев Фёдор
думаю, это 999912312 23:59:59.997
Перебор!
21 июл 11, 14:34    [11006973]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
zvezda_t
Member

Откуда: Урал
Сообщений: 919
Ken@t,
автор
ALTER TABLE dbo.tab1
ADD CONSTRAINT MaxDate DEFAULT (('01.01.2222')) FOR [date_next]

сделала по вашему примеру - у меня создалось ограничение в указанной таблице. а мне нужно значение по умолчанию для всей БД
21 июл 11, 14:37    [11006996]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
zvezda_t
Ken@t,
автор
ALTER TABLE dbo.tab1
ADD CONSTRAINT MaxDate DEFAULT (('01.01.2222')) FOR [date_next]

сделала по вашему примеру - у меня создалось ограничение в указанной таблице. а мне нужно значение по умолчанию для всей БД
Что было для "для всей бд" - делаете такое для каждого поля во всех таблицах этой БД.

Сообщение было отредактировано: 21 июл 11, 14:38
21 июл 11, 14:38    [11007008]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
zvezda_t
Member

Откуда: Урал
Сообщений: 919
iap,

Благодарю за разъяснение! Вопрос закрыт :)
21 июл 11, 14:38    [11007010]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4994
zvezda_t,
create default [dbo].[MyDefault] as cast('22220101' as datetime)
GO


create type [dbo].[MyDate] FROM [datetime] NOT NULL
GO

exec sp_bindefault 'MyDefault', 'MyDate'
GO
Далее использовать MyDate для типов нужных столбцов...
21 июл 11, 16:53    [11008199]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
ЕвгенийВ
zvezda_t,
create default [dbo].[MyDefault] as cast('22220101' as datetime)
GO


create type [dbo].[MyDate] FROM [datetime] NOT NULL
GO

exec sp_bindefault 'MyDefault', 'MyDate'
GO
Далее использовать MyDate для типов нужных столбцов...
В следующей версии обещают это выкинуть.
Я и ссылку давал.
21 июл 11, 17:14    [11008373]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
Raoul
Member

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

Жаль, если выкинут.

Как паллиатив (чтобы при необходимости заменить дефолтное значение только в одном месте), можно сделать так:

create function dbo.MyDefault()
returns datetime
as begin

  return convert(datetime,'2222-01-01');

end;

И прописать dbo.MyDefault() как DEFAULT для нужных столбцов.
22 июл 11, 12:51    [11012002]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
zvezda_t
Member

Откуда: Урал
Сообщений: 919
ЕвгенийВ, благодарю Вас за ответ! спасибо что научили)

Raoul, точно) хорошая идея :) спасибо!
22 июл 11, 13:35    [11012373]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
zvezda_t
ЕвгенийВ, благодарю Вас за ответ! спасибо что научили)
Raoul, точно) хорошая идея :) спасибо!
После того, как функцию использовали для значения по умолчанию, её нельзя изменить.
К тому же функции работают не настолько быстро, как хотелось бы, поэтому вставка строк будет медленнее, чем могла бы быть. ;)
22 июл 11, 14:42    [11012999]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
Raoul
Member

Откуда:
Сообщений: 177
DeColo®es
После того, как функцию использовали для значения по умолчанию, её нельзя изменить.

Есть такое. Но можно создать таблицу Defaults, из которой функция будет читать нужную запись, и тогда необходимость редактировать функцию отпадёт.

DeColo®es
К тому же функции работают не настолько быстро, как хотелось бы, поэтому вставка строк будет медленнее, чем могла бы быть. ;)

Это да, если критично, то прописать DEFAULT в определении поля будет проще.
22 июл 11, 15:16    [11013277]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Raoul
Есть такое. Но можно создать таблицу Defaults, из которой функция будет читать нужную запись, и тогда необходимость редактировать функцию отпадёт.
Да. А еще лучше, чтобы сразу из интернета читала, чтобы и на сервер не надо было лазить. Чего мелочиться-то?

Сообщение было отредактировано: 22 июл 11, 15:20
22 июл 11, 15:20    [11013304]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
Raoul
Member

Откуда:
Сообщений: 177
Гавриленко Сергей Алексеевич
Да. А еще лучше, чтобы сразу из интернета читала, чтобы и на сервер не надо было лазить. Чего мелочиться-то?

А каким, по-Вашему, будет более эффективное решение задачи сделать настраиваемый дефолт для использования в нескольких полях, зная, что CREATE DEFAULT рано или поздно отменят?
22 июл 11, 15:31    [11013397]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Raoul
Гавриленко Сергей Алексеевич
Да. А еще лучше, чтобы сразу из интернета читала, чтобы и на сервер не надо было лазить. Чего мелочиться-то?

А каким, по-Вашему, будет более эффективное решение задачи сделать настраиваемый дефолт для использования в нескольких полях, зная, что CREATE DEFAULT рано или поздно отменят?
Констрейнт никто не отменит.
22 июл 11, 15:55    [11013571]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
Raoul
Member

Откуда:
Сообщений: 177
Гавриленко Сергей Алексеевич
Констрейнт никто не отменит.

То есть для изменения дефолта шерстить все таблицы и вручную менять дефолты? Или есть какой-то механизм, с помощью которого это можно автоматизировать? Навскидку ничего, кроме цикла по information_schema.columns и динамического выполенния запросов через sp_executesql не придумывается.
22 июл 11, 16:14    [11013731]     Ответить | Цитировать Сообщить модератору
 Re: Как создать собственное значение по умолчанию  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
Raoul
Гавриленко Сергей Алексеевич
Констрейнт никто не отменит.

То есть для изменения дефолта шерстить все таблицы и вручную менять дефолты? Или есть какой-то механизм, с помощью которого это можно автоматизировать? Навскидку ничего, кроме цикла по information_schema.columns и динамического выполенния запросов через sp_executesql не придумывается.
ИМХО, этот способ решения не более экзотичен, чем сама задача.

А еще, есть представление sys.default_constraints.
22 июл 11, 16:43    [11013969]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить