如何得到触发器刚刚更新的是哪一行吗?着急。在线等。

AlexGL 2004-08-17 03:38:08
如题,我写了一个触发器,当表中某条记录的某列值被更新后,首先检查是否被更新成3,如果该列值被更新成3,如何得到该行的主键值?
...全文
275 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlexGL 2004-08-19
  • 打赏
  • 举报
回复
揭帖了。谢谢!!
zjcxc 元老 2004-08-17
  • 打赏
  • 举报
回复
if @@rowcount>0---如果总数大于1 --如果保留你原来的,应该是>0
zjcxc 元老 2004-08-17
  • 打赏
  • 举报
回复
create trigger tr_update on 表
for update
as
declare @主键 int
if update(某列) --检查有没有被更新
begin
if exists(select 1 from inserted where 某列=3)
begin
DECLARE tables_cursor CURSOR FOR
select 主码 from inserted where 某列=3

open tables_cursor
FETCH NEXT FROM tables_cursor INTO 变量2
WHILE (@@FETCH_STATUS = 0)
BEGIN
-------执行相关代码
FETCH NEXT FROM tables_cursor INTO 变量2
END
close tables_cursor
deallocate tables_cursor
end
else
begin
----执行相关代码

end
end

AlexGL 2004-08-17
  • 打赏
  • 举报
回复
哦。。。忘记说了,我的变量2在前面是声明过的。
AlexGL 2004-08-17
  • 打赏
  • 举报
回复
正如邹老大所讲,多条记录同时执行时出现了问题,于是我把代码改成如下

create trigger tr_update on 表
for update
as
declare @主键 int
if update(某列) --检查有没有被更新
begin
select @主键=主键 from inserted where 某列=3

if @@rowcount>1---如果总数大于1
begin
DECLARE tables_cursor CURSOR FOR select 主码 from inserted where 某列=3
begin
open tables_cursor
FETCH NEXT FROM tables_cursor INTO 变量2
WHILE (@@FETCH_STATUS = 0)
BEGIN
-------执行相关代码
FETCH NEXT FROM tables_cursor INTO 变量2
END
close tables_cursor
end

if @@rowcount=1------如果总数等于1
----执行相关代码


end



结果我的代码执行没有任何效果。。。晕了。。。。还是麻烦各位老大了。。。
AlexGL 2004-08-17
  • 打赏
  • 举报
回复
Let me try ....thanks .....
zjcxc 元老 2004-08-17
  • 打赏
  • 举报
回复
注意,由于SQL的触发器不是行级触发,所以如果同时有多条记录的某列被更新为3

上面的方法只能得到其中一条记录的主键,如果要得到多条记录的主键,用游标处理.
zjcxc 元老 2004-08-17
  • 打赏
  • 举报
回复
create trigger tr_update on 表
for update
as
declare @主键 int
if update(某列) --检查有没有被更新
begin
select @主键=主键 from inserted where 某列=3
if @@rowcount=0 --如果=0,则是没有被更新为3
print '没有被更新为3'
else
begin
select 被更新的主键=@主键
end
end
azsoft 2004-08-17
  • 打赏
  • 举报
回复

COL_NAME
返回数据库列的名称,该列具有相应的表标识号和列标识号。

语法
COL_NAME ( table_id , column_id )
pbsql 2004-08-17
  • 打赏
  • 举报
回复
if update(某列)
select 主键列 from inserted where 某列=3

34,587

社区成员

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

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