组合字段的触发器,高手请进

sqlkxr 2013-04-30 02:57:56
假如一个销售表 主表和一个明细表,主表插入一条数据,明细表分别至少插入一条数据
但主表插入数据在前,
明细表的数据是后插入的。

并且明细表中的数据是一条一条插入的

--创建主表

create table testm(id int,je decimal(10,2))

--创建明细表

create table testmx(id int,mc nvarchar(20))

情景是这样的,假如在主表插入一条汇总数据
insert into testm select 1,30

明晰表则分别用如下的形式插入一条以上的数据

insert into testmx (id,mc) values( 1,'中国')

insert into testmx (id,mc) values( 1,'英国')

也就是说如果建立触发器,至少要触发一次以上,那么如何组合mc这个字段呢,
也就是说,如何得到'中国'+'英国'的字符串组合呢
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sqlkxr 2013-04-30
  • 打赏
  • 举报
回复
引用 3 楼 AcHerat 的回复:
不知道我理解的是否正确,试试下边这个语句!

--testmx (id,mc)

-- sql2005 及之上版本
select id,
   stuff((select ','+mc from testmx where id = t.id for xml path('')),1,1,'')
from testmc t
group by id
不是你说的的情况,比如主表有个主键,明细表和他是外键约束的,也就是说会插入一调以上的明细,我想通过触发器获得者一条以上明细的某个字段的字符串组合,因为数据是分条插入的,所以每次只能捕获一条,没办法把三个外键相同的数据捕获
sqlkxr 2013-04-30
  • 打赏
  • 举报
回复
不是我
引用 2 楼 shoppo0505 的回复:
你可以在触发器中定义任意多个数据插入操作,这个没有问题。 但是,我感觉你的逻辑反了,一般都是数据先插入明细表,然后通过触发器,汇总数据。 你这样的话,不知道在明细表中要插入多少行不同的数据,如果你插入的数据每次都是一样的,那么也没啥意义。
不是我逻辑反了,实际情况中,我用过的两种软件,都竟然是先插入主表,然后是明细表。 我也很纠结,他们怎么会这样搞
AcHerat 2013-04-30
  • 打赏
  • 举报
回复
不知道我理解的是否正确,试试下边这个语句!

--testmx (id,mc)

-- sql2005 及之上版本
select id,
   stuff((select ','+mc from testmx where id = t.id for xml path('')),1,1,'')
from testmc t
group by id
shoppo0505 2013-04-30
  • 打赏
  • 举报
回复
你可以在触发器中定义任意多个数据插入操作,这个没有问题。 但是,我感觉你的逻辑反了,一般都是数据先插入明细表,然后通过触发器,汇总数据。 你这样的话,不知道在明细表中要插入多少行不同的数据,如果你插入的数据每次都是一样的,那么也没啥意义。
seusoftware 2013-04-30
  • 打赏
  • 举报
回复
实在没看明白主表和从表触发器的意义在哪里, 数据明明是分别插入2个表的。

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧