如何从表FormField获取行值并在表Registrant中创建一列?不知何故,它还需要足够聪明才能知道列是否已经存在。
基本上我是将第1个表中的行翻到第2个表的列中。
我现在拥有的是手动输入的内容。但是我需要对其进行编码才能执行此操作。这会是一个触发器,或者我怎么能正确地做到这一点?
FormField表包含ColumnName列,一行为FirstName。
注册人表包含应对应的列,例如列FirstName
它必须是"万无一失的"因为如果其他人将FirstName输入ColumnName,它不应该尝试添加另一个FirstName列。这也意味着它应该重新格式化字符串以作为适当的列(正确的情况,没有空格等)。
答案 0 :(得分:2)
这将为缺少的字段生成ALTER TABLE命令。 “傻瓜式”应该事先做好:
SELECT 'ALTER TABLE [Registrant] ADD [' + [ColumnName] + '] NVARCHAR(MAX);'
FROM [FormField] f
LEFT JOIN syscolumns c ON OBJECT_NAME(c.id) = 'Registrant'
AND c.Name = f.[ColumnName]
WHERE c.id IS NULL