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

Откуда:
Сообщений: 16
Народ! подскажите,please, как в SQLServer таблице сделать поле уникальным,но не ключевым и с возможностью null-значений? заранее спасибо!
21 окт 04, 11:28    [1050958]     Ответить | Цитировать Сообщить модератору
 Re: уникальное поле  [new]
Alexey_DBA
Member

Откуда: Киев
Сообщений: 116
Построить уникальный индекс по данному полю.
21 окт 04, 12:00    [1051098]     Ответить | Цитировать Сообщить модератору
 Re: уникальное поле  [new]
1234567
Member

Откуда:
Сообщений: 704
UNIQUE Constraints
You can use UNIQUE constraints to ensure that no duplicate values are entered in specific columns that do not participate in a primary key. Although both a UNIQUE constraint and a PRIMARY KEY constraint enforce uniqueness, use a UNIQUE constraint instead of a PRIMARY KEY constraint when you want to enforce the uniqueness of:

A column, or combination of columns, that is not the primary key.
Multiple UNIQUE constraints can be defined on a table, whereas only one PRIMARY KEY constraint can be defined on a table.

A column that allows null values.
UNIQUE constraints can be defined on columns that allow null values, whereas PRIMARY KEY constraints can be defined only on columns that do not allow null values.

A UNIQUE constraint can also be referenced by a FOREIGN KEY constraint.
21 окт 04, 12:02    [1051110]     Ответить | Цитировать Сообщить модератору
 Re: уникальное поле  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62912
Уникальность и возможность нуль значений не совместимы, нуль значение это тоже значение, поэтому удастся создать только одно.
21 окт 04, 12:07    [1051146]     Ответить | Цитировать Сообщить модератору
 Re: уникальное поле  [new]
_bob
Member

Откуда: Москва
Сообщений: 1654
null = null = false, если ANSI_NULLS ON, так что не надо тут
21 окт 04, 12:09    [1051153]     Ответить | Цитировать Сообщить модератору
 Re: уникальное поле  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
2 _bob

SET ANSI_NULLS влияет на результат сравнение в выражениях. И при любом значении этого SETа NULL значение в уникальном индексе/ограничении может быть тока одно.

SET ANSI_NULLS OFF
GO
IF OBJECT_ID('Table1', 'Table') IS NOT NULL
  DROP TABLE Table1
GO
CREATE TABLE Table1
  (col1 int NOT NULL IDENTITY (1,1) PRIMARY KEY CLUSTERED,
   col2 char(1) NULL UNIQUE)
GO

INSERT INTO Table1(col2) VALUES('A')
INSERT INTO Table1(col2) VALUES('B')
INSERT INTO Table1(col2) VALUES(NULL)
INSERT INTO Table1(col2) VALUES(NULL)
GO

SET ANSI_NULLS ON
GO
IF OBJECT_ID('Table1', 'Table') IS NOT NULL
  DROP TABLE Table1
GO
CREATE TABLE Table1
  (col1 int NOT NULL IDENTITY (1,1) PRIMARY KEY CLUSTERED,
   col2 char(1) NULL UNIQUE)
GO

INSERT INTO Table1(col2) VALUES('A')
INSERT INTO Table1(col2) VALUES('B')
INSERT INTO Table1(col2) VALUES(NULL)
INSERT INTO Table1(col2) VALUES(NULL)
GO
21 окт 04, 12:46    [1051324]     Ответить | Цитировать Сообщить модератору
 Re: уникальное поле  [new]
Glory
Member

Откуда:
Сообщений: 104760
_bob
null = null = false, если ANSI_NULLS ON, так что не надо тут


set ansi_nulls on
go
declare @t table(f1 int null unique)
insert @t select null
insert @t select null
21 окт 04, 12:50    [1051346]     Ответить | Цитировать Сообщить модератору
 Re: уникальное поле  [new]
Glory
Member

Откуда:
Сообщений: 104760
helllen
Народ! подскажите,please, как в SQLServer таблице сделать поле уникальным,но не ключевым и с возможностью null-значений? заранее спасибо!

use tempdb
go
create table t(f1 int identity primary key, f2 int null, f3 as isnull(f2,f1), constraint cs1 unique(f2,f3) )
go
insert t(f2) select null
insert t(f2) select null
insert t(f2) select 1
insert t(f2) select 2
insert t(f2) select 1
select * from t
go
drop table t
21 окт 04, 12:51    [1051353]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить