请问主从表的insert时更新主键的触发问题。

zc_king 2003-10-14 09:10:21
------------------------------
CREATE TRIGGER trgTest ON 主表 FOR INSERT
AS


select @id = id from inserted

update 从表 set id = @new_id where id = @id

update 主表 set id = @new_id where id = @id

------------------------------
加入 update 从表 set id = @new_id where id = @id
后就不能insert,请问如何解决

谢谢。

...全文
47 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-10-14
  • 打赏
  • 举报
回复
建议:

企业管理器--右键表--设计表--任意字段处按右键--关系--新建--设置与其他表的关联(即那些表的字段与本表的字段有关系,要被自动更新)--设置好后,选中"对 INSERT 和 UPDATE 强制关系"--并同时选中"级联更新相关的字段",如果要级联删除,再选中"级联删除相关的记录"--最后确定就可以了


你就不用写update 从表 set id = @new_id where id = @id 这句了。
pengdali 2003-10-14
  • 打赏
  • 举报
回复
-- 将新的id update 到 从表
update 从表 set id = @new_id where id = @id

这里,在你的从表有这个@id的记录吗?
zc_king 2003-10-14
  • 打赏
  • 举报
回复
因为insert的时候id的值是不规则的。想通过这个触发器,生成一个新的id。
再把@new_id update 回主表和从表。


CREATE TRIGGER trgTest ON 主表 FOR INSERT
AS

-- 取主表的键值
select @id = id from inserted

-- 生成一个新的id
select @new_id = .......

-- 将新的id update 到 主表
update 主表 set id = @new_id where id = @id

-- 将新的id update 到 从表
update 从表 set id = @new_id where id = @id


arrow_gx 2003-10-14
  • 打赏
  • 举报
回复
你的代码错得太多,概念不清晰,看不懂你的目的,一下代码大概能实现你的功能

CREATE TRIGGER trgTest ON 主表
FOR INSERT
AS
select @id=id from inserted

update 从表 set id =@id
Wally_wu 2003-10-14
  • 打赏
  • 举报
回复
写清楚点,看不明你的代码
pengdali 2003-10-14
  • 打赏
  • 举报
回复
你的代码错得太乱,看不懂你要做什么

CREATE TRIGGER trgTest ON 主表
FOR INSERT
AS
select @id=id from inserted

update 从表 set id =@id
txlicenhe 2003-10-14
  • 打赏
  • 举报
回复
1:即然是主从表就一定要先有主表再有从表。
2:@new_id从哪里来的? 主从表用到的@new_id要统一

34,588

社区成员

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

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