SQL2000 两个表之间的操作与触发器
有两个表A,B,表A里有两个字段(number,name),表B有两个字段(number,data),数据库的情况是表B中每隔段时间由外部导入新的数据(不覆盖原数据),B...
有两个表A,B,表A里有两个字段(number,name),表B有两个字段(number,data),数据库的情况是表B中每隔段时间由外部导入新的数据(不覆盖原数据),B.data的值在6.85~7.01之间,我想实现:
if B.data>7.01
A.name='en'+A.name
where A.number=B.number
而且,由于B表数据一直在增加,所以我想B表每增加一行就立刻检查新加的行B.data的大小(之前的记录就不再检查了)并按要求修改A表的内容。请问如何在B表中用触发器实现这个功能呢
FIRE_TRIGGERS子句 放在哪里执行呢
还有,子句的问题先不说,其他代码检查后提示:”列前缀inserted与查询所用的表名或别名不匹配”.我是从COM口采集的数据经解调器进数据库的,所以能不能改进一下,使得对所有新增记录进行按要求检查呢 悬赏+30 展开
if B.data>7.01
A.name='en'+A.name
where A.number=B.number
而且,由于B表数据一直在增加,所以我想B表每增加一行就立刻检查新加的行B.data的大小(之前的记录就不再检查了)并按要求修改A表的内容。请问如何在B表中用触发器实现这个功能呢
FIRE_TRIGGERS子句 放在哪里执行呢
还有,子句的问题先不说,其他代码检查后提示:”列前缀inserted与查询所用的表名或别名不匹配”.我是从COM口采集的数据经解调器进数据库的,所以能不能改进一下,使得对所有新增记录进行按要求检查呢 悬赏+30 展开
展开全部
--------------已修改脚本,请参考
create trigger trg_b_insert on b
after insert
as
begin
update A.name='en'+A.name
where A.number=inserted.number
and inserted.data>7.01
end
----------------------------需要注意如果b是用bulk insert等方式批量导入数据时,别忘了加上FIRE_TRIGGERS子句启动触发器
---------------------------------------
bulk insert b
from 'c:\b.csv'
with
(
FIELDTERMINATOR=',',
ROWTERMINATOR='\n',
FIRE_TRIGGERS
)
create trigger trg_b_insert on b
after insert
as
begin
update A.name='en'+A.name
where A.number=inserted.number
and inserted.data>7.01
end
----------------------------需要注意如果b是用bulk insert等方式批量导入数据时,别忘了加上FIRE_TRIGGERS子句启动触发器
---------------------------------------
bulk insert b
from 'c:\b.csv'
with
(
FIELDTERMINATOR=',',
ROWTERMINATOR='\n',
FIRE_TRIGGERS
)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询