我有一个webform,它将用户输入到各个字段中,并将它们作为单独的列放入表中。然后我需要获取这一行数据并将列中的数据作为行复制到另一个表中。第一个表中的列与第二个表中的id相关联(id用于与表无关的其他目的,并且是静态集)。
我无法绕过这头,所以我确信我上面的描述不是很清楚。这是一个简化的例子:
表1
street_address | city | state | zip
TRIGGER
表2
street_address | 1
city | 2
state| 3
zip | 4
如果表1中的一列留空,则根本不应在表2中创建一行。
同样,表2中使用的id已经设置(即表1中的每一列将匹配表2中的预定id)。
对此的任何帮助都会很棒。如果我没有解释清楚,我很抱歉。我会在问题出现时澄清问题。
谢谢。
答案 0 :(得分:2)
听起来你的触发器需要从UNPIVOT
表到另一个表INSERTED
。请记住,您需要将选择列表中的所有列强制转换为最长列的长度。这是SQL Fiddle
SELECT colName, value
FROM(
SELECT
street_address
,CAST(city AS VARCHAR(100)) AS city
,CAST(state AS VARCHAR(100)) AS state
,CAST(zip AS VARCHAR(100)) AS zip
FROM Table1
)AS p
UNPIVOT(
value FOR colName IN(street_address, city, state, zip)
)AS unpvt