【原创】触发器出现不能在 'inserted' 表和 'deleted' 表中使用 text、ntext 或 image 列----问题解决方法

来源:互联网   编辑:思良  发表时间:2015-07-10  关注度:1052  

思良:最近学习触发器,测试环境:2003+SQL2005数据库搭建的网站,

 鉴于工作需要,给网站做个镜像,所以要数据库同步,其中网站数据库有两个表j_module_temp_article和j_module_article,j_module_article表作用是网站发文表,其中ID是自动增长,其他字段有text、ntext类型,而j_module_temp_article表结构和j_module_article表结构一样,就是ID不是自动增长,数据库同步其实就是要j_module_article表同步,而这个镜像网站不是简单的给j_module_article写个触发器就可以同步到镜像网站的j_module_article表里,不同网络的。。反正要想实现同步只能新建一个临时表,这个临时表和j_module_article表一样,就是ID不能是自动增长,通过临时表把数据复制到j_module_article表里,所以要在临时表里写个触发器来复制数据,这个临时表就是j_module_temp_article表。

刚刚开始在j_module_temp_article里添加一个新触发器,

具体内容如下:

-------------------------------------------------

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [update_nw_web]  --创建名为 update_nw_web的触发器
   ON  j_module_temp_article  --  在j_module_temp_article表中创建触发器
   AFTER INSERT    --   触发器类型为AFTER INSERT触发器
AS 
BEGIN
insert into j_module_article (channelid,classid,[title],[adddate],[summary],[editor],[author],[tags],[viewnum],[ispass],[isimg],[img],[istop],[correlation],[userid],[readgroup],[sourcefrom],[content],[siteid],[orderid],[isvideo])
 select 

channelid,classid,title,adddate,summary,editor,author,tags,viewnum,ispass,isimg,img,istop,correlation,userid,readgroup,sourcefrom,[content],siteid,orderid,isvideo from inserted

--  插入语句,简单表述insert into j_module_article(字段) select 字段 from inserted
END

-----------------------------------------------------

j_module_article表ID为自动增长,所以字段里不写ID了,不过运行上面语句,

提示错误:触发器出现不能在 'inserted' 表和 'deleted' 表中使用 text、ntext 或 image 列。

上网查询,发现是触发器类型不对,于是修改成下面的语句:

------------------------------------------------

CREATE   TRIGGER     [INSERT_FOR_a1]   --创建名为  INSERT_FOR_a1的触发器

ON   j_module_temp_article --  在j_module_temp_article表中创建触发器
INSTEAD   OF   INSERT   --   改触发器类型为INSTEAD   OF触发器
AS
INSERT   j_module_temp_article   SELECT   *   FROM   inserted
insert into j_module_article (channelid,classid,[title],[adddate],[summary],[editor],[author],
[tags],[viewnum],[ispass],[isimg],[img],[istop],[correlation],[userid],[readgroup],[sourcefrom],
[content],[siteid],[orderid],[isvideo])
 select 
channelid,classid,title,adddate,summary,editor,author,tags,viewnum,ispass,isimg,img,istop,correlation,userid,readgroup,sourcefrom,[content],siteid,orderid,isvideo from inserted
--  插入语句,简单表述insert into j_module_article(字段) select 字段 from inserted
GO

-----------------------------------------------------

运行通过。

在j_module_temp_article表里插入数据,触发触发器,j_module_article自动也插入了数据。

    支付宝扫码领红包,不用多说,用过的人都知道,双赢的,你得红包,我得到同等推广红包,比如你扫到1元,我也得1元,大家得到的红包可以去实体店消费!新用户至少10元以上哦,每天都有!希望大家每天来本站扫码!感谢感谢!

    把打赏改成扫码红包了!支持本站就扫码下!


下一篇:SQL2005加入触发器对象名无效的解决办法


上一篇:sql语法:inner join on, left join on, right join on详细使用方法


小提示:按 回车[Enter]键 返回,按 ←键 返回上一页, 按 →键 进入下一页。

网友评论(0条评论)

选择头像
     

新闻评论(共有 0 条评论)

手机访问

本站APP

联系我

加我微信