希望修改xml字段中节点内容自动修改另一个表中相关记录

zicerock 2010-04-15 10:09:38
请教各位大虾:

表1 xml字段部分内容:
<unit name="华南重汽">
<unit name="人事科">
</unit>
<unit name="财务科">
</unit>
...
</unit>

表2:
用户名 密码 所属单位
乔依婷 *** 财务科
...

当外部程序修改表1中“财务科”的名称为“财务处”时,希望数据库系统能自动将表2中所属单位列为“财务科”的记录的该字段都改为“财务处”。

看用触发器或其他手段能否实现,怎么实现?

谢谢!
...全文
71 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zicerock 2010-04-25
  • 打赏
  • 举报
回复
虽然没有满意答案,但还是要感谢各位的关注!!
zicerock 2010-04-16
  • 打赏
  • 举报
回复
很感谢happycell188的热情帮助,本人收益非浅(主要做程序开发,sql确实很菜,就只几个添加、修改、删除等)

不过happycell188可能曲解我的意思了(主要是我的表达有误),表1 的xml不是字段名,而是字段类型,暂且将该字段取名为“单位结构”。整个表1就这个字段,一条记录,存放着单位的树状组织结构,内容大概就是这样的:
<unit name="华南重汽">
<unit name="人事科">
</unit>
<unit name="财务科">
</unit>
...
</unit>
外部程序如ADO.net通过诸如
“update 表1 set 单位结构.modify('replace value of (/unit[@name="华南重汽"]/unit[@name="财务科"]/@name)[1] with "财务处"')”
的语句修改表1单位结构记录中的某个节点或属性名称,希望数据库管理系统能自动检查到这种修改,并在表2"对应记录中将“所属单位”字段内容同步修改。

目的就是:表2的每条记录的"所属单位"字段的内容要与表1"单位机构"字段中各个xml节点"name"属性值(表示各单位名)相同。
永生天地 2010-04-15
  • 打赏
  • 举报
回复
当外部程序修改表1中,这个表是什么
喜-喜 2010-04-15
  • 打赏
  • 举报
回复
--------------------SQL Server数据格式化工具-------------------
---------------------------------------------------------------
-- DESIGNER :happycell188(喜喜)
-- QQ :584738179
-- Development Tool :Microsoft Visual C++ 6.0 C Language
-- FUNCTION :CONVERT DATA TO T-SQL
---------------------------------------------------------------
-- Microsoft SQL Server 2005
-- Developer Edition on Microsoft Windows XP [版本 5.1.2600]
---------------------------------------------------------------
---------------------------------------------------------------

use test
go
if object_id('test.dbo.A') is not null drop table A
-- 创建数据表
create table A
(
xml char(9)
)
go
--插入测试数据
insert into A select '华南重汽'
union all select '人事科'
union all select '财务科'
go
if object_id('test.dbo.B') is not null drop table B
-- 创建数据表
create table B
(
用户名 char(7),
密码 char(4),
所属单位 char(7)
)
go
--插入测试数据
insert into B select '乔依婷','***','财务科'
go
--代码实现
--创建触发器
create trigger tri_test
on A
for update
as
begin
update B set 所属单位=(select xml from inserted)
where 所属单位=(select xml from deleted)
end
go
--测试触发器
update A set xml='财务处' where xml='财务科'
--输出表数据
select * from A
select * from B

/*
xml
---------
华南重汽
人事科
财务处


用户名 密码  所属单位
---------------------------
乔依婷 *** 财务处

*/
喜-喜 2010-04-15
  • 打赏
  • 举报
回复
触发器完全可以实现啊

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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