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

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

Есть таблица

CREATE TABLE [dbo].[WidgetsPositions](
[IdWidget] [int] NOT NULL,
[Position] [int] NOT NULL,
)

где - IdWidget это Id блока который будет отображен на Html странице
Position - это то в каком порядке блоки будут отражены

Вот пример с данными, есть 3 виджета и как оно отобразятся(2,4,3)


[IdWidget] [Position]
2 1
3 3
4 2

Задача в следующем - нужно менять порядок следования виджетов, но при этом значения в колонке Position должны быть уникальными. Допустим нужно сделать чтобы порядок следования был такой(2,3,4)


[IdWidget] [Position]
2 1
3 2
4 3
24 авг 14, 16:28    [16485332]     Ответить | Цитировать Сообщить модератору
 Re: Интересная задача с Unique столбцом  [new]
xparadox
Member

Откуда:
Сообщений: 4
Так же при добавлении новой строки в колонке Position должно проставляться значение на 1 больше максимального существующего значения в колонке Position(аналог identity)

Как бы не хочется изобретать велосипеды, поэтому решил сначала посоветоваться по обоим вопросам.
24 авг 14, 16:42    [16485357]     Ответить | Цитировать Сообщить модератору
 Re: Интересная задача с Unique столбцом  [new]
_human
Member

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

http://msdn.microsoft.com/en-us/library/ff878091.aspx
24 авг 14, 17:01    [16485403]     Ответить | Цитировать Сообщить модератору
 Re: Интересная задача с Unique столбцом  [new]
xparadox
Member

Откуда:
Сообщений: 4
создал, но как прикрутить теперь это к таблице чтобы автоматом при создании строки значение бралось оттуда?
24 авг 14, 17:45    [16485498]     Ответить | Цитировать Сообщить модератору
 Re: Интересная задача с Unique столбцом  [new]
_human
Member

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

Examples

ALTER TABLE [dbo].[WidgetsPositions]
ADD CONSTRAINT DFT_myname
DEFAULT(NEXT VALUE FOR [dbo].[mySeq]) FOR [Position];
24 авг 14, 18:01    [16485535]     Ответить | Цитировать Сообщить модератору
 Re: Интересная задача с Unique столбцом  [new]
xparadox
Member

Откуда:
Сообщений: 4
Да все отлично работает, спасибо!

Но вот как поменять значения в 2 строках на друг на друга если столбец может содержать только уникальные значения?

Временно снять ограничения?(не хотелось бы использовать такой вариант)

Есть ли какие то общепринятые способы?
24 авг 14, 18:32    [16485604]     Ответить | Цитировать Сообщить модератору
 Re: Интересная задача с Unique столбцом  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
xparadox
Есть ли какие то общепринятые способы?
Общепринятый способ: не работать с таблицами построчно. Как только начнете мыслить категориями множеств, все станет ясным и понятным:
declare @t table (id int primary key, o int unique);
declare @s table (id int primary key, o int unique);

insert into @t
values
 (1, 1), (2, 2), (3, 3), (4, 4);

insert into @s
values
 (1, 2), (2, 1);

select * from @t order by o;

update t
 set
  o = s.o
from
 @s s join
 @t t on t.id = s.id;

select * from @t order by o;
24 авг 14, 19:28    [16485719]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить