SQL Server触发器将数据从一个表中的插入行的列复制到另一个表的行

时间:2013-02-15 22:49:20

标签: sql-server-2008

我有一个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)。

对此的任何帮助都会很棒。如果我没有解释清楚,我很抱歉。我会在问题出现时澄清问题。

谢谢。

1 个答案:

答案 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