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

Откуда: Киев
Сообщений: 587
Гуру, кто стакливался и как это "чудо" обьяснить?
Есть запрос:
use tempdb
GO
create table t1 (
	id int default (0),
	id1 int default 0,
	id2 int default ((0)),
	id3 numeric(10,2) default (0),
	id4 numeric(10,2) default 0,
	id5 numeric(10,2) default ((0) - 4.9/44 - (40-55)),
	id6 varchar(10) default '5',
	id7 varchar(10) default ('5'),
	id8 datetime default getdate(),
	id9 datetime default (getdate()),
	id10 datetime default ('20091010')
)
GO
select COLUMN_DEFAULT from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 't1'
GO
drop table t1
GO
Под 2000 сервером 4-й СП:
(0)
(0)
(0)
(0)
(0)
(0 - 4.9 / 44 - (40 - 55))
('5')
('5')
(getdate())
(getdate())
('20091010')

Под 2005-2008 серверами:
((0))
((0))
((0))
((0))
((0))
(((0)-(4.9)/(44))-((40)-(55)))
('5')
('5')
(getdate())
(getdate())
('20091010')

С чего это микрософт это начал делать? Я имеею ввиду оборачить числа еще раз скобками, даже если уже они обернуты?

Спасибо.
26 ноя 09, 11:48    [7981232]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Glory
Member

Откуда:
Сообщений: 104760
А что означают междометия "Под 2000 сервером" и "Под 2005-2008 серверами" ?
26 ноя 09, 11:52    [7981262]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Ora Starter
Member

Откуда: Киев
Сообщений: 587
Glory,

Версии sql сервера.
26 ноя 09, 11:53    [7981276]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ora Starter
Glory,

Версии sql сервера.

Это значит, что скопировать символы

(0)
(0)
(0)
(0)
(0)
(0 - 4.9 / 44 - (40 - 55))
('5')
('5')
(getdate())
(getdate())
('20091010')
"под 2000 сервер" ?
И посмотреть как они там красиво выглядят в Query Analyzer ?
26 ноя 09, 11:55    [7981301]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
baracs
Member

Откуда: Москва
Сообщений: 7198
Ora Starter
как это "чудо" обьяснить?


http://msdn.microsoft.com/ru-ru/library/ms143359(SQL.90).aspx
Выражения в вычисляемых столбцах, ограничения CHECK и DEFAULT
Исходный текст выражения подвергается дешифрованию и нормализации, а выходные данные этой операции сохраняются в метаданных каталога. Семантика дешифрованного выражения будет эквивалентна исходному тексту, однако синтаксическое соответствие не гарантируется. Например, выражение вычисляемого столбца, введенное в виде c1 + c2 + 1, будет выглядеть как (([c1]+[c2])+(1)) в столбце определения в представлении системного каталога sys.computed_columns.
26 ноя 09, 11:57    [7981318]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Ora Starter
Member

Откуда: Киев
Сообщений: 587
Glory,

Это результат работы запроса.
26 ноя 09, 11:58    [7981332]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Ora Starter
Member

Откуда: Киев
Сообщений: 587
baracs,

спасибо!
26 ноя 09, 11:58    [7981337]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Ora Starter
Member

Откуда: Киев
Сообщений: 587
Вот просто интересно, и зачем это микрософтовцы сделали? Уж если на то пошло, почему так не анализировать sp, udf, triggers, views и их править?
Зачем вообще додумывать за программиста? Ну ошибся я со скобками, так это мои проблемы... Зачем их еще добавлять. Не пойму я....
Как теперь получить то значение default, которое я указал при создании? парсить?
27 ноя 09, 10:39    [7986031]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Glory
Member

Откуда:
Сообщений: 104760
А зачем вам его получать ?
default вроде делается как раз для того, чтобы вообще не указывать столбец при добавлении
27 ноя 09, 10:46    [7986094]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Ora Starter
Member

Откуда: Киев
Сообщений: 587
Glory,

Ну допустим Вы изменили таблицу, и у Вас поменялось default для какой-то колонки, как узнать а в базе данных оно такое же или нет? Сейчас мне или всегда его дропать и создавать по новой, или писать свой анализатор. Что им(МС) мешало не понятно...
27 ноя 09, 10:50    [7986123]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ora Starter
Glory,

Ну допустим Вы изменили таблицу, и у Вас поменялось default для какой-то колонки, как узнать а в базе данных оно такое же или нет? Сейчас мне или всегда его дропать и создавать по новой, или писать свой анализатор. Что им(МС) мешало не понятно...

Не понял. Вы хотите проверить текущие данные поля на их совпадение с default-ом этого поля ?
И что будет, если значения не совпадут ?
27 ноя 09, 10:54    [7986164]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Ora Starter
Member

Откуда: Киев
Сообщений: 587
Glory,

нет не данные, а метаданные.
27 ноя 09, 10:55    [7986175]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ora Starter
Glory,

нет не данные, а метаданные.

Еще запутаннее. Если "у Вас поменялось default для какой-то колонки," то какой смысл "как узнать а в базе данных оно такое же или нет" ?
Ну поменялось и поменялось
27 ноя 09, 10:57    [7986208]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Ora Starter
Glory,

Ну допустим Вы изменили таблицу, и у Вас поменялось default для какой-то колонки, как узнать а в базе данных оно такое же или нет? Сейчас мне или всегда его дропать и создавать по новой, или писать свой анализатор. Что им(МС) мешало не понятно...
А таблица разве не в базе данных? А где тогда?
У базы есть DEFAULT на колонку?
27 ноя 09, 11:00    [7986246]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Ora Starter
Member

Откуда: Киев
Сообщений: 587
Glory,

информация о default для колонки метаданные? где храниться? в базе данных.
Пример. Было:
create table t1 (
id5 numeric(10,2) default ((0) - 4.9/44 - (40-55))
)
Стало:
create table t1 (
id5 numeric(10,2) default ((0) - 4.9/(44 - (40-55)))
)
Для того чтобы узнать а какое было раньше defaultб я должен сделать запрос к метаданным и разобрать выражение, сделать по старинке и сравнить с новым, и решить дропать его и создавать новое или не трогать.
27 ноя 09, 11:01    [7986248]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ora Starter

Для того чтобы узнать а какое было раньше defaultб я должен сделать запрос к метаданным и разобрать выражение, сделать по старинке и сравнить с новым, и решить дропать его и создавать новое или не трогать.

Зачем ??? Это вы оптимизируете работу пользователя ?
27 ноя 09, 11:02    [7986260]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Ora Starter
Member

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

мне кажется все достаточно прозрачно :)
27 ноя 09, 11:02    [7986261]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Ora Starter
Member

Откуда: Киев
Сообщений: 587
Glory,

нет, я оптимизирую лишние запросы DDL.
27 ноя 09, 11:03    [7986269]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Glory
Member

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

мне кажется все достаточно прозрачно :)

А по-моему геморойнее. DROP/CREATE дефолта будет быстрее разбора отличий
27 ноя 09, 11:03    [7986270]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Ora Starter,

получается, у Вас DEFAULT живёт своей жизнью?
А перед Вами стоит нелёгкая задача в определённые моменты времени узнавать, не изменился ли он?
27 ноя 09, 11:05    [7986287]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Ora Starter
Member

Откуда: Киев
Сообщений: 587
Glory,

для sql 2005 и 2008 - конечно, зачем мне этот гемор с парсингом...
Просто интересно, зачем? Зачем они это наворотили? для хранимок такое сделали бы, чего уж мелочиться...
27 ноя 09, 11:05    [7986293]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ora Starter
Glory,

нет, я оптимизирую лишние запросы DDL.

Только времени на оптимизацию затрачивается больше, чем на выполнение "неотимизированного" DDL
27 ноя 09, 11:07    [7986310]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Ora Starter
Member

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

да, привести таблицу в нужное состояние... просто мне кажеться дропать и создавать новое дефолное будет не очень если табличка на сотню миллионов записей...
27 ноя 09, 11:07    [7986314]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Ora Starter
Member

Откуда: Киев
Сообщений: 587
Glory,

т.е. select из метаданных дольше чем дроп/криейт на террабайте?
27 ноя 09, 11:09    [7986328]     Ответить | Цитировать Сообщить модератору
 Re: default и скобки  [new]
Glory
Member

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

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

В том то и дело, что drop/create default никак не затрагивает записи. Потому что default никак на может влиять на уже существующие данные
27 ноя 09, 11:10    [7986346]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить