sybase:如何知道表中是哪个字段的值被更新??

sdsuper 2001-09-10 03:56:15
sybase:如何知道表中是哪个字段的值被更新??
if (从inserted表和deleted表?)
怎么判断?
else
什么方法得到呢?
...全文
112 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
okcai 2001-09-11
  • 打赏
  • 举报
回复
好象只有用if update(a1)
begin
end
if update(a2)
begin
end
.
.
.
的方式,我用动态sql生成也不能执行。
总是说
Server Message: Number 140, Severity 15
Server 'local', Line 1:
Can only use IF UPDATE within a CREATE TRIGGER.
呵呵。看来只有写很多个段了。
sdsuper 2001-09-11
  • 打赏
  • 举报
回复
我这个数据库是想实现这样的功能
在a库中a1表发生更新(或是什么其他操作,主要是更新)时,把更新的数据存放到
b库中b1表中,且a1中每一个字段的更新,都在b1中生成一条记录
望能得到完美的解答,谢谢!!!!
sdsuper 2001-09-11
  • 打赏
  • 举报
回复
谢谢你的解释,但是在更新那段中我觉得,它是先给定字段名,然后才去判断是否这个字段被
更新,这样做虽然可以实现,要是有40-50个字段都要判断的话,不就非常麻烦了啊?
顺便问问,if update(a1)中的a1是否可以是变量呢?
BTW:问题解决完就给分,两个问题的分一起给,呵呵
okcai 2001-09-11
  • 打赏
  • 举报
回复
你没有给你的表结构说明,我给你个例子,但愿对你有所帮助
假如有两个表
create table a(a1 int,a2 int)
create table b(b1 int,b2 char(20))
在a表上分别建立insert,update和delete触发器,当然你也可以组合起来用
-----insert
create trigger t_a_i on a
for insert
as
declare
@rows int
select @rows=@@rowcount ---把@@rowcount记录下来,防止变化
if @@rowcount<1 return ---没有插入
if exists(select * from inserted) and @@rowcount>=1 ---有插入
insert into b select I.a1,'Inserted' from inserted I --做相应的处理(inserted)
return
------delete

create trigger t_a_d on a
for delete
as
declare
@rows int
select @rows=@@rowcount ---把@@rowcount记录下来,防止变化
if @@rowcount<1 return ---没有删除
if exists(select * from deleted) and @@rowcount>=1 --有删除
insert into b select D.a1,'Deleted' from deleted D --做相应的处理(deleted)
return
----update
----因为update就是先delete,然后insert
create trigger t_a_u on a
for update
as
declare
@rows int
select @rows=@@rowcount ---把@@rowcount记录下来,防止变化
if @@rowcount<1 return ---没有修改
if update(a1) --修改了第一个字段a1,你也可以判断其他的条件
begin
if exists(select * from deleted) and @rows>=1 --修改以前的值
insert into b select D.a1,'Update Old' from deleted D
if exists(select * from inserted) and @rows>=1 --修改以后的值
insert into b select I.a1,'Update New' from inserted I
end
return
sdsuper 2001-09-10
  • 打赏
  • 举报
回复
up
sdsuper 2001-09-10
  • 打赏
  • 举报
回复
怎么没有人回答啊。我继续up~~~~~~up~~~~up~~~~~~
sdsuper 2001-09-10
  • 打赏
  • 举报
回复
up

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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