加了觸發器後,取UPDATE後的ID錯誤!

leef_zh 2010-08-12 02:53:42
我有一個表主鍵是自動編號的,用的是MSSqlServer2000

在這個表上建了一個觸發器,然後在程序裡面執行UPDATE後,去取得這個ID
假設它返回的值86,但是數據庫實際更新的是76

我把這個表上的觸發器刪除以後,再執行第二次更新,取得ID為77, 數據庫實際ID也是77,正確的。

有人知道這個問題怎麼解決嗎?
...全文
56 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
leef_zh 2010-08-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huwenfeng2001hf 的回复:]
自動編號与触发器没有关系 吧
[/Quote]

在PB裡是有關係的,執行UPDATE以後,使用觸發器插入另外一個表的自動ID後,PB返回的ID是那個表的ID,不是你正在更新這個表的ID
huwenfeng2001hf 2010-08-12
  • 打赏
  • 举报
回复
自動編號与触发器没有关系 吧
zyf32145 2010-08-12
  • 打赏
  • 举报
回复
例如,有两个表 T1 和 T2,在 T1 上定义了一个 INSERT 触发器。当将某行插入 T1 时,触发器被激发,并在 T2 中插入一行。此例说明了两个作用域:一个是在 T1 上的插入,另一个是作为触发器的结果在 T2 上的插入。

假设 T1 和 T2 都有 IDENTITY 列,@@IDENTITY 和 SCOPE_IDENTITY 将在 T1 上的 INSERT 语句的最后返回不同的值。

@@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值,该值是插入 T2 中的值。

SCOPE_IDENTITY() 返回插入 T1 中的 IDENTITY 值,该值是发生在相同作用域中的最后一个 INSERT。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY() 函数,则该函数将返回 NULL 值。


752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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