Учитывая следующую простую структуру таблиц (SQL Server 2008), я хочу иметь возможность поддерживать уникальность столбца числовой последовательности, но я хочу иметь возможность обновлять это значение для любой записи (с).Обновление записей базы данных с уникальным ограничением
CREATE TABLE MYLIST(
ID int NOT NULL IDENTITY(1, 1)
, TITLE varchar(50) NOT NULL
, SEQUENCE int NOT NULL
, CONSTRAINT pk_mylist_id PRIMARY KEY(ID)
, CONSTRAINT uq_mylist_sequence UNIQUE(SEQUENCE)
);
Мой интерфейс позволяет мне смешиваться порядок вещей и я буду знать до делать обновления, которые не перекрываются последовательности они все должны быть в, но как выполнить обновление, не будучи столкнувшись с нарушением единственного ограничения?
Например, у меня есть эти записи:
ID TITLE SEQUENCE
1 APPLE 1
2 BANANA 2
3 CHERRY 3
И я хочу, чтобы обновить их порядковые номера к следующему:
ID TITLE SEQUENCE
1 APPLE 3
2 BANANA 1
3 CHERRY 2
Но на самом деле я мог бы иметь дело с пару десятков пунктов , Номера последовательностей не должны перекрываться. Я думал о попытке использовать триггеры или временно отключить ограничение, но это, похоже, создает больше проблем. Я использую C# и LINQ-to-SQL, но я открыт для строго баз данных решений.
Можете ли вы уточнить в одном заявлении? – gbn
У меня есть свобода попробовать что угодно, если это ответит на ваш вопрос. – JustinStolle