请问得到这样的解决,如何操作比较好.

esunshine 2007-09-01 12:13:18

CREATE TABLE AAA
(
ID int IDENTITY (1, 1) ,
NAME varchar (50) NULL ,
KEY1_OLD varchar(255) NULL,
PRIMARY KEY(ID)
)


CREATE TABLE BBB
(
ID int ,
NAME varchar(50),
KEY2_NEW varchar(255)
)



CREATE TABLE TEST
(
ID int ,
NAME varchar(100) NULL,
AGE int NULL
PRIMARY KEY(id)
)

INSERT INTO TEST VALUES(100,'AA',20);
INSERT INTO TEST VALUES(101,'BB',20);
INSERT INTO TEST VALUES(102,'CC',20);
INSERT INTO TEST VALUES(103,'DD',20);

需求如下:
第一执行如下语句:
update TEST SET ID=1 WHERE NAME='AA';

需在AAA 表记录

字段名 值
NAME ID

KEY1_OLD 100

需在BBB表记录

字段名 值
AAA.ID BBB.ID
NAME ID
KEY2_NEW 1

第二执行如下语句

update TEST SET NAME='EEEEEEE' WHERE ID=101;
需在AAA 表记录

字段名 值
NAME NAME

KEY1_OLD 101

需在BBB表记录

字段名 值
AAA.ID BBB.ID
NAME NAME
KEY2_NEW null

谢谢各位.帮忙看看.更新数据量很大.谢谢各位.谢谢.

...全文
196 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
esunshine 2007-09-02
  • 打赏
  • 举报
回复
to Limpire(昨夜小楼) 首先感谢你的解答.现在存在一个问题.我对test表还要监控insert操作.问题是:id值无法关联对应哦.如何解决呢?谢谢
esunshine 2007-09-02
  • 打赏
  • 举报
回复
谢谢楼上的.还有没有其它好的方案吗?麻烦你了.谢谢
duanzhi1984 2007-09-01
  • 打赏
  • 举报
回复
不知道你的需求是什么?
楼主把问题描述再清楚点,这样别人帮你才好帮
Limpire 2007-09-01
  • 打赏
  • 举报
回复
create trigger tr_test on Test
for update
as
set nocount on
insert AAA select * from deleted
insert AAA select * from inserted
set nocount off
go
Limpire 2007-09-01
  • 打赏
  • 举报
回复
触发器
dawugui 2007-09-01
  • 打赏
  • 举报
回复
把aaa,bbb的结果写出来.没看懂你的要求.
Limpire 2007-09-01
  • 打赏
  • 举报
回复
/*
表要改一下
*/

CREATE TABLE AAA(
ID int IDENTITY(1, 1) NOT NULL,
NAME varchar (50),
KEY1_OLD varchar (255),
CONSTRAINT PK_AAA_ID PRIMARY KEY CLUSTERED (ID)
)
GO

CREATE TABLE BBB (
ID int IDENTITY (1, 1) NOT NULL,--这个改为自增列
NAME varchar (50),
KEY2_NEW varchar (255),
Modified datetime,--加个更新时间,可以不需要,但下面触发器也要相应改。
CONSTRAINT PK_BBB_ID PRIMARY KEY CLUSTERED (ID)
)
GO

create trigger tr_test
on TEST
for update
as
set nocount on
if update(ID)--如果更新主键ID
begin
insert AAA select 'ID', ID from deleted
insert BBB select 'ID', ID, getdate() from inserted
end
if update(NAME)--如果更新NAME字段
begin
insert AAA select 'ID', ID from inserted
insert BBB select 'NAME', NULL, getdate() from inserted
end
set nocount off
go
Limpire 2007-09-01
  • 打赏
  • 举报
回复
我再看看
esunshine 2007-09-01
  • 打赏
  • 举报
回复
楼上的.有什么好的方法啊.能相信点吗?谢谢.
Limpire 2007-09-01
  • 打赏
  • 举报
回复
如果批量更新,要实现一一对应 BBB.ID=AAA.ID,处理起来很麻烦。整合成一个表好处理一些,但还是难处理。
esunshine 2007-09-01
  • 打赏
  • 举报
回复
大侠们帮我看看.不知道问题说明白没.
esunshine 2007-09-01
  • 打赏
  • 举报
回复
谢谢上面各位的回帖.谢谢.不好意思,刚才没有说明.谢谢
对表test更新进行触发
分两种情况:
a:当直接修改主键时,需在AAA 表种记录如下信息;
执行update TEST SET ID=1 WHERE NAME='AA'后;

第一需求:在AAA表需有如下记录
ID NAME KEY1_OLD
111 id 1
第二需求:在BB表需有如下记录

ID NAME KEY2_NEW
111 id 100

说明:
AAA表中id为自增长类型;
AAA与BBB中的ID在关联的;
NAME就是主键或者其他字段名称;
KEY1_OLD 与KEY2_NEW为主键修改前的值与修改后的值.

b:当修改其他字段时(除主键外)时,需在AAA
a:当直接修改主键时,需在AAA 表种记录如下信息;
执行update TEST SET NAME='EEEEEEE' WHERE ID=101;后;

第一需求:在AAA表需有如下记录
ID NAME KEY1_OLD
112 id 101
第二需求:在BB表需有如下记录

ID NAME KEY2_NEW
112 NAME NULL

说明:
AAA表中id为自增长类型;
AAA与BBB中的ID在关联的;
AAA表中的name值为主键字段名称;
BBB表中的name值为本次修改的字段名称.

请问如何实现.谢谢.

Limpire 2007-09-01
  • 打赏
  • 举报
回复
create trigger tr_test on Test
for update
as
set nocount on
if update(id)
begin
insert AAA(name, key1_old) select 'id',id from deleted
insert BBB(name, key2_new) select 'id',id from inserted
end
if update(name)
begin
print '自己写,改'
end
set nocount off
go
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

34,590

社区成员

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

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