【原创】触发器出现不能在 'inserted' 表和 'deleted' 表中使用 text、ntext 或 image 列----问题解决方法
思良:最近学习触发器,测试环境: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自动也插入了数据。