Eu criei uma solução de pesquisa e funciona muito bem. Todas as perguntas têm várias opções para escolher como resposta. O que eu gostaria de alcançar é quando uma determinada opção é salva como resposta, o valor ou valores de outra tabela devem ser atualizados. A tabela ou tabelas a serem atualizadas podem variar dependendo da resposta do usuário e o tipo de dados da coluna também pode variar.
Eu estava pensando em usar uma tabela de metadados, neste exemplo AffectedData , contendo informações sobre as tabelas, os valores e tipos de dados. Algo como este pseudocódigo:
CREATE TABLE AffectedData
ID int
TableName nvarchar(50) NOT NULL -- table to update
ColumnName nvarchar(50) NOT NULL -- the col to update
DataType nvarchar(50) NOT NULL -- the col data type
DataValue nvarchar(50) NOT NULL -- the value to update with
Operation int --insert or update
Quando uma resposta é inserida, um gatilho ou um procedimento pode consultar essa tabela e, usando alguma lógica condicional, converter o DataValue para o tipo de dados correto, usando DataType como dica e inserir ou atualizar na tabela especificada em TableName . Em outras palavras, suponho que tenho que usar SQL dinâmico, usando sp_executesql para executar a instrução.
Este é um caminho a percorrer ou existe alguma outra maneira sábia de conseguir isso?
Eu diria que esta é uma solução bastante razoável. Você pode considerar adicionar um sinalizador "ativo" ou algo semelhante para poder desativar determinadas linhas de sua tabela AffectedData sem excluí-las. Além disso, você precisará garantir que qualquer solução que você tenha leve em consideração a possibilidade de várias entradas na tabela de metadados. Colocando uma chave primária que os restringe ou usando uma solução de loop ou lote ao criar seu SQL dinâmico.