2012-03-20 142 views
4

概述:试图为SQL Server 2008数据库编写触发器。 TableATableB具有相同的模式。将触发器复制行插入到另一个重复表SQL Server 2008

目的:在插入到TableA,该行中的所有内容复制到一个新的行TableB

注意迄今:

使用this question我设法得到大多数的方式,但然后偶然发现了一个问题

无法使用'插入'和 'd中的文本,ntext或图像列选了'桌子。

我只是有文本列,但我也想复制它们。

我发现this website似乎有一种变通方法,但它正在更新,我一直无法将它应用到我的插入例子...

任何想法?

编辑:目的是增加现有产品的功能,不幸的是我不能改变TableA的模式。

+4

不会花费更多时间[替换'text'列吗?](http://msdn.microsoft.com/en-us/library/ms187993(v = sql.100).aspx) – 2012-03-21 04:57:12

+0

抱歉?我不关注... – baron 2012-03-21 21:50:53

+0

我链接到SQL Server 2008文本,ntext和图像数据类型的文档页面。在顶部,在一个大的高亮框中:“** ntext **,** text **和** image **数据类型将在未来版本的MicrosoftSQL Server中删除。避免在新开发中使用这些数据类型工作,并计划修改当前使用它们的应用程序,而不是使用'nvarchar(max)','varchar(max)'和'varbinary(max)'“。 – 2012-03-22 05:51:07

回答

7

我不确定为什么你不能使用你链接的例子。它应该如此简单:

CREATE TRIGGER T_TableA_I 
on TableA 
after insert 
as 
    set nocount on 

    insert into TableB (ColumnA,ColumnB,/* Columns in table b */) 
    select a.ColumnA,a.ColumnB, /* Columns from table a */ 
    from 
     TableA a 
      inner join 
     inserted i 
      on 
       a.PKColumn1 = i.PKColumn1 and 
       a.PKColumn2 = i.PKColumn2 /* Primary Key columns from table A */ 

当然,您的问题不包含任何表定义,所以上面需要相当多的修改。希望你可以研究在上面添加/删除哪些注释。

相关问题