次の単純なテーブル構造(SQL Server 2008)を使用すると、数値シーケンス列の一意性を維持できるようにしたいが、任意のレコードに対してその値を更新できるようにしたいs)。一意の制約を使用してデータベースレコードを更新する
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を使用していますが、厳密にデータベースソリューションを公開しています。
1つのステートメントで更新できますか? – gbn
あなたの質問に答えることができれば、私は何でも自由に試すことができます。 – JustinStolle