У меня несколько странный вариант использования.
Допустим, у меня есть простая таблица Persons
:
USE TestDB
Go
CREATE TABLE Persons (
PersonID int,
LastName varchar(255),
FirstName varchar(255),
City varchar(255)
)
INSERT INTO Persons (PersonID, LastName, FirstName, City)
VALUES
(1, 'Smith', 'John', 'New York'),
(2, 'Doe', 'Jane', 'Los Angeles'),
(3, 'Sixpack', 'Joe', 'Chicago')
У меня также есть таблица Overrides
, которая определяет, как эта таблица необходимо изменить:
CREATE TABLE Overrides (
PersonID int,
ColumnName varchar(255),
OverrideValue varchar(255)
)
INSERT INTO Overrides (PersonID, ColumnName, OverrideValue)
VALUES
(2, 'City', 'CHANGED CITY'),
(1, 'FirstName', 'CHANGED FIRSTNAME'),
(3, 'LastName', 'CHANGED LASTNAME')
PersonID
указывает уникальную строку ColumnName
сообщает мне, какой столбец этой строки необходимо изменить OverrideValue
говорит мне, какое значение следует поместить в эту строку
Я хотел бы создать процесс, который будет применять переопределения в таблице Overrides
к таблице Persons
. В приведенном выше случае Persons
будет go из исходного состояния:
PersonID LastName FirstName City
----------- ----------- ----------- -----------
1 Smith John New York
2 Doe Jane Los Angeles
3 Sixpack Joe Chicago
В следующее состояние:
PersonID LastName FirstName City
----------- ----------- ----------- -----------
1 Smith CHANGED FIRSTNAME New York
2 Doe Jane CHANGED CITY
3 CHANGED LASTNAME Joe Chicago
Я мог бы сделать очень уродливым l oop через таблицу Overrides
и UPDATE
для каждой строки, но я надеялся найти более элегантный подход для этой не элегантной ситуации.