私のユースケースでは、このようなものをAzure Data Factory(ADF)で動作させようとしています
しかし、理論的な観点からこの質問にも興味があります。 postgresのような通常のSQLエンジンでこのようなことをすることは可能ですか?
このキー(non_unique_id、timestamp)に基づく挿入を禁止します。ここで、timestampはそのペアの一意の値です。
例えば:
non_unique_id: 0cf6c19c14
timestamp: 1970-01-01 00:00:01
挿入前:
select non_unique_id, timestamp from tbl where non_unique_id = 0cf6c19c14;
0 results
挿入前:
select non_unique_id, timestamp from tbl where non_unique_id = 0cf6c19c14;
0cf6c19c14, 1970-01-01 00:00:01
0cf6c19c14, 1970-01-01 00:00:01
0cf6c19c14, 1970-01-01 00:00:01
...
挿入前:
select non_unique_id, timestamp from tbl where non_unique_id = 0cf6c19c14;
0cf6c19c14, 2038-01-19 03:14:05
0cf6c19c14, 2038-01-19 03:14:05
0cf6c19c14, 2038-01-19 03:14:05
...
もちろん他の列もありますが、これは最も単純なケースを示しています
タイムスタンプはnon_unique_id
に機能的に依存しているため、これは正規化の問題です。
したがって、主キーnon_unique_id
と対応するタイムスタンプを持つ別のテーブルが必要です。
SQL Server/Azure SQLデータベースでは、できますがこれを インデックス付きビュー で強制できます。
スキーマのバインドと定義を含むビューを作成する
SELECT non_unique_id,
timestamp,
COUNT_BIG(non_unique_id) AS Count
FROM dbo.YourTable
GROUP BY non_unique_id,
timestamp
次に、一意のクラスター化インデックスをビューの列non_unique_id
に配置します。