SQL Server 2008 R2には、次の構造のテーブルがあります
(
Id INT NOT NULL PRIMARY KEY,
Left1 INT NOT NULL,
Left2 INT NULL,
Right1 NVARCHAR(128) NOT NULL,
Right2 NVARCHAR(128) NOT NULL,
Right3 NVARCHAR(128) NULL,
Right4 NVARCHAR(128) NULL,
Right5 NVARCHAR(128) NULL,
Right6 NVARCHAR(128) NULL
)
これは、システム( "Left")からRight1-6に移動し、別のシステム( "Right")に移動するLeft1とLeft2をマップするために使用されます。
左の列が一意であることを確認する必要があります。これは、一意のインデックスを使用して行ったものであり、左右の組み合わせも一意であることを確認する必要があります。
サポートされている最大列サイズは900バイトであるため、ここではインデックスを使用できません。テーブルをLeft、Right、Left2Rightに分割することは避ける必要があります。これは、非常に面倒で、ユースケースでエラーが発生しやすいためです。
組み合わせの独自性を強制する正しい方法は何ですか?
私の要件は次のとおりです。
- テーブル全体で、Left1とLeft2に同じ値の行があってはなりません(解決済み)
- テーブル全体で、Left1、Left2、Right1、Right2、Right3、Right4、Right5、Right6に同じ値の行があってはなりません(ここでヘルプが必要です)