ユニークなキーボード重複データロードの問題

792 ワード

複合キーにカラムを追加するときに発生する問題
複合の一意キー列にnull値のデータがロードされている場合、そのデータは非重複データとみなされます.
ex)
——————————
col1 | col2 | col3 | col4
——————————
AIP | emc | 123 | null
AIP | emc | 123 | null
例に示すように、冗長データの許可とロード
ただし、C、U、Dを実行する場合、スレッド内のトランザクションはテーブル内のデータ変更を許可しません(lock)
その後、他のトランザクションのデータ変更は、先に実行されたトランザクションがコミットされるときに許可されます.
重複データのロードを防ぐために、仮想コラムとユニークなインデックスが追加されました.
-- ALTER TABLE test_table ADD virtual_col4 varchar(100) as (CASE WHEN col4 is NULL THEN 'NULL' ELSE ACTION_CD END) virtual,
-- ALTER TABLE test_table ADD UNIQUE INDEX test_table_UN_INDEX (col1, col2, col3, virtual_col4)

データがnullの場合、文字列「NULL」がロードされ、固有のデータが認識されます.