Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 UNIQUE в MS SQL и в ORACLE  [new]
azhukov
Member

Откуда:
Сообщений: 356
Понадобилось тут создать на MS SQL табличке констрейнт UNIQUE по столбцу, где могут быть пустые значения, но по непустым нужна уникальность и был крайне удивлен, что в отличии от Oracle там это не проходит. NULL там расссматривается как такое же значение как и не пустые, то есть двух пустых быть не может. Но ведь это неправильно!
9 июн 05, 13:02    [1609332]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
Vasya76
Guest
:)
9 июн 05, 13:24    [1609451]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 20362
ага, и select 1 from dual не работает!
полный отстой!
9 июн 05, 13:33    [1609509]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
Crip
Member

Откуда:
Сообщений: 2490
Вам сюда
9 июн 05, 13:42    [1609559]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
azhukov
Member

Откуда:
Сообщений: 356
Crip
Вам сюда

Это конечно решение, но некрасивое:))
9 июн 05, 14:07    [1609698]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
nkulikov
Guest
Кто сказал что множество null в UNIQUE это не правильно??? Может наоборот???
9 июн 05, 14:30    [1609814]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
Gold
Member

Откуда: Харьков
Сообщений: 2947
Баг
9 июн 05, 15:56    [1610372]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
Gold
Member

Откуда: Харьков
Сообщений: 2947
Хотя да, если об этом написано в документации, то это у MS фича...
9 июн 05, 15:57    [1610378]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
Один1
Guest
azhukov
Но ведь это неправильно!
А что есть критерий "правильности" ?
Oracle ?
9 июн 05, 17:38    [1610881]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
www.fun4me.narod.ru
Member

Откуда: Moscow
Сообщений: 2406
Это правильно!
9 июн 05, 18:09    [1611033]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
www.fun4me.narod.ru
Member

Откуда: Moscow
Сообщений: 2406
You cannot create a unique index on a single column if that column contains NULL in more than one row. Similarly, you cannot create a unique index on multiple columns if the combination of columns contains NULL in more than one row. These are treated as duplicate values for indexing purposes.
9 июн 05, 18:13    [1611050]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Gold
Баг

(иезуитским шепотом): на самом деле баг в оракуле, который допускает сии заведомо неправильные ситуяции....
а select 1 from dual в mssql работает, стоит только приложить руку....
зато в оракуле не работаит select @@microsoftversion...
а вот в сайбейзе работаит... стоит только приложить руку....
9 июн 05, 19:58    [1611243]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
locky
Gold
Баг

(иезуитским шепотом): на самом деле баг в оракуле, который допускает сии заведомо неправильные ситуяции....
а select 1 from dual в mssql работает, стоит только приложить руку....
зато в оракуле не работаит select @@microsoftversion...
а вот в сайбейзе работаит... стоит только приложить руку....

И в ASA тоже явный баг, правда очень такой баг всем нравится :)

P.S. А в каком Sybase нужно прикладывать руку ? С ASA то все понятно, вешаем на коннект процедуру инициализации, в которой создаем глобальную переменную @@microsoftversion, в которую пишем "Microsoft SQL Server 2005 Final", чтобы все сессии радовались. А разве в других СУБД Sybase это возможно ?
9 июн 05, 20:08    [1611254]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
2ASCRUS
ну, насчет Сайбейза я не сумлевался - всё-ж таки братья идеологически когда-то единоутробные.
А вот насчет какого сайбейза я говорил - дык Вам виднее, Вы у нас спец по ним. Но то что в каком-то точно можно было - я помнил четко (и жутко завидовал)
p.s. кста, @@microsoftversion - int.
9 июн 05, 20:31    [1611291]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
Один1

А что есть критерий "правильности" ?
Oracle ?

Почему нет? Если нужно чтобы null не допускался, можно наложить сответствующее ограничение целостности на значение. А уникальность кроме пустых значений имеет смысл в некоторых случаях в РМД. Например, есть страховой персональный номер. Он уникальный по стране. Но в момент прихода на предприятие его у некоторых нет. Потому нужна и уникальность на тех у кого есть (чтобы не засандалили одного и того же несколько раз или не дали один и тот же нескольким.), и допуск пустых значений для тех у кого нет.
Последних обычно не много, и с ними ошибка менее вероятна.
9 июн 05, 20:59    [1611329]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
c127
Guest
2 azhukov

>NULL там расссматривается как такое же значение как и не пустые, то есть двух пустых быть не может. Но ведь это неправильно!

Это как раз правильно, если не ошибаюсь так написано в стандарте. По-моему это действительно очень удобно, но к сожалению почти все пошли другим путем.

2 locky

>ну, насчет Сайбейза я не сумлевался - всё-ж таки братья идеологически когда-то единоутробные.

Сайбейз ASA к мелкософту не имеет отношения. Это ASE родственник мелкомягкому. ASE тоже вроде бы поддерживает много NULL-ов в UNIQUE полях.
10 июн 05, 02:20    [1611621]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
azhukov
Member

Откуда:
Сообщений: 356
c127
2 azhukov

>NULL там расссматривается как такое же значение как и не пустые, то есть двух пустых быть не может. Но ведь это неправильно!

Это как раз правильно, если не ошибаюсь так написано в стандарте. По-моему это действительно очень удобно, но к сожалению почти все пошли другим путем.

2 locky

>ну, насчет Сайбейза я не сумлевался - всё-ж таки братья идеологически когда-то единоутробные.

Сайбейз ASA к мелкософту не имеет отношения. Это ASE родственник мелкомягкому. ASE тоже вроде бы поддерживает много NULL-ов в UNIQUE полях.


А мне казалось, что в стандарте написано, что выражение NULL=NULL, также как NULL<>NULL ложно, и следовательно в уникальном столбце может быть сколько угодно пустых значений, если только это не первичный ключ. Где написано, то что Вы говорите?
10 июн 05, 08:59    [1611821]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
www.fun4me.narod.ru
Member

Откуда: Moscow
Сообщений: 2406
azhukov
А мне казалось, что в стандарте написано, что выражение NULL=NULL, также как NULL<>NULL ложно, и следовательно в уникальном столбце может быть сколько угодно пустых значений, если только это не первичный ключ.


Ваше утверждение неверно, так уникальными, называются элементы, каждый из которых отличен от других. Если элементы несравнимы, то нельзя вести речь о том, что они уникальны. Они одинаковы.
10 июн 05, 09:17    [1611881]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
Estets
Member

Откуда: Химки
Сообщений: 604
www.fun4me.narod.ru
Если элементы несравнимы, то нельзя вести речь о том, что они уникальны. Они одинаковы.

Несколько спорное утверждение.
10 июн 05, 16:00    [1614153]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
www.fun4me.narod.ru
Member

Откуда: Moscow
Сообщений: 2406
Estets
www.fun4me.narod.ru
Если элементы несравнимы, то нельзя вести речь о том, что они уникальны. Они одинаковы.

Несколько спорное утверждение.


И чем же отличается один NULL от другого?
Я не говорю о том, что два NULL равны. Но (NULL<>NULL) != true.

Уникальность - это не остутствие равенства. Это наличие отличий.
10 июн 05, 16:10    [1614194]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
может проголосуем? ))
Sybase,MS SQL,DB2 - на одной стороне
Oracle,PostgreSQL,MySQL - на другой

Как интересно у INFORMIX и как у INTERBASE?
10 июн 05, 16:36    [1614306]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
azhukov

NULL=NULL, также как NULL<>NULL ложно

В Оракле (и я думаю не тока в нем) трехзначная логика. И, в частности, оба эти выражения не истинны и не ложны, а неизвестны (третье значение).
Сам Кодд был приверженцем четырехзначной. И четвертое значение интерпретировалось - не опреденлено.
И в таком аспектке можно считать, что NULL не противоречит термину уникальность. Там просто данных нет и потому операции сравнения бессмысленны. Можно тока проверить что значения нет (IS NULL).
10 июн 05, 17:21    [1614518]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
gardenman
может проголосуем? ))
Sybase,MS SQL,DB2 - на одной стороне
Oracle,PostgreSQL,MySQL - на другой

Как интересно у INFORMIX и как у INTERBASE?

Sybase со всех сторон - ASE в лагерь MSSQL, ASA в лагерь Oracle :)
10 июн 05, 17:28    [1614552]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
ASCRUS
gardenman
может проголосуем? ))
Sybase,MS SQL,DB2 - на одной стороне
Oracle,PostgreSQL,MySQL - на другой

Как интересно у INFORMIX и как у INTERBASE?

Sybase со всех сторон - ASE в лагерь MSSQL, ASA в лагерь Oracle :)


А Sybase IQ? посередине?
10 июн 05, 17:34    [1614579]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE в MS SQL и в ORACLE  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
gardenman
ASCRUS
gardenman
может проголосуем? ))
Sybase,MS SQL,DB2 - на одной стороне
Oracle,PostgreSQL,MySQL - на другой

Как интересно у INFORMIX и как у INTERBASE?

Sybase со всех сторон - ASE в лагерь MSSQL, ASA в лагерь Oracle :)


А Sybase IQ? посередине?

Sybase IQ как и полагается аналитическому серваку естественно сверху
10 июн 05, 18:39    [1614860]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить