У меня есть таблица, для которой я хочу создать SCD Type 2
с помощью T-SQL Merge statement
, однако у нее нет уникального ключа.
RoleTaskTable:
RoleID, TaskID
1,A
1,B
1,C
2,A
2,D
2,F
3,A
3,B
3,E
3,F
Очевидно, я получаю ошибку
"The MERGE statement attempted to UPDATE or DELETE the same row more than once. This happens when a target row matches more than one source row. A MERGE statement cannot UPDATE/DELETE the same row of the target table multiple times. Refine the ON clause to ensure a target row matches at most one source row, or use the GROUP BY clause to group the source rows."
Когда я комбинирую RoleID
и TaskID
в качестве уникального индекса для промежуточной таблицы, а также для таблицы SCDT, она распознается просто как новая запись, поэтому все записи (даже если некоторые из них удалены) остаются помеченными как активные в таблице SCD.
Как вы можете решить что-то подобное?
На всякий случай я могу показать весь код, который у меня есть для этого SCD, но я думаю, что здесь упущено что-то основное.