在项目中写了两个表的触发器分别是cd表。
触发本触发器的条件是:插入的语句的projectid(企业编号)>0并且cdxm(长贷项目)=‘借款金额’时,同时在本表中插入一条projectid和marketid、cdje(长贷金额)相同,marketyear=插入的marketyear(发生年份)+插入的zq(账期),长贷项目为‘应还金额’的数据记录。
写法如下:修改本错误主要看cd表。
if (
select projectid
from inserted )>0
begin
if( select cdxm from inserted)= '借款金额'
begin
insert into cd
select projectid,marketid, convert( int,marketyear)+ convert( int,zq),
'应还金额',cdje,0 from inserted
end
end
begin
if( select cdxm from inserted)= '借款金额'
begin
insert into cd
select projectid,marketid, convert( int,marketyear)+ convert( int,zq),
'应还金额',cdje,0 from inserted
end
end
根据sql跟踪,错误提示为第一行和第三行,应修改为:
Code
if
exists(
select projectid
from inserted
where projectid>0)
begin
insert into cd
select projectid,marketid, convert( int,marketyear)+ convert( int,zq),
'应还金额',cdje,0 from inserted where cdxm= '借款金额' and projectid>0
end
begin
insert into cd
select projectid,marketid, convert( int,marketyear)+ convert( int,zq),
'应还金额',cdje,0 from inserted where cdxm= '借款金额' and projectid>0
end
使用exists关键字,判断是否包含结果集,这样就防止了第一行返回多条记录,同时将cdxm放入到内部限制,而不是用if,返回多结果集了。
问题是解决了,令我奇怪的是,我还有一个表,写法如一个段代码,内容基本类型,就不报错,很奇怪呀!sql也有表里不一的情况呀!
本文转自叶子文文博客51CTO博客,原文链接http://blog.51cto.com/leafwf/185839如需转载请自行联系原作者
叶子文文