该怎么处理?

lilyzhang 2001-06-07 11:18:00
我的数据库中有两个表 table1中team_a,team_b两个队名字端
table2 中是队名基本资料表 有队名team_name字段,
如果我修改了table2中的队名,table1中将会发生错误,我听说用触发器可以
对它进行updated,inserted,deleted 时处理!该怎么做?
...全文
74 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tramplyc 2001-06-07
  • 打赏
  • 举报
回复
为table1和table2的队名字段设置索引,建立关联
对该关联设置完整性约束
yangzi 2001-06-07
  • 打赏
  • 举报
回复
这种问题比较难以处理。
如果取消外键。那你就要用程序维护其数据一致性。
如果不取消,又不能级联修改或删除。
wwl007 2001-06-07
  • 打赏
  • 举报
回复
如果你用的是sql server!并且你设置了外连接那么触发其没有办法解决这个问题!因为触发器没有befor级的!也没有几联删除的特点!hughie(雨神) 的方法不会可行的!这是个sql server的触发器!
如果你要想解决这个问题最好去掉外间约束!然后再用触发器!

CREATE TRIGGER kkk ON table2
FOR UPDATE,insert
AS
if update(team_name)
begin
begin tran
if (select count(*) from deleted)>0 then
begin
update table1
set term_a = insertd.term_name from inserted,deleted
where deleted.primay key=term_a.primay key
end
'说明你仅仅插入了数据
if (select count(*) from deleted)<0 then
begin
update term_a
set term_a=insertd.term_name
from inserted
where 连接外间
end

if @@error<>0
rollback tran
else
commit tran
end

return


hughie 2001-06-07
  • 打赏
  • 举报
回复
CREATE TRIGGER 你的触发器名 ON table2
FOR UPDATE
AS
if update(team_name)
begin
begin tran
declare @Key int(这个数据类型是我猜的,你按你的实际类型修改)
select @key = 你的关联字段 from deleted
update term_a = term_name from inserted where 你的关联字段 = @key
if @@error<>0
rollback tran
else
commit tran
end

return
zoukaix 2001-06-07
  • 打赏
  • 举报
回复
关注!
lilyzhang 2001-06-07
  • 打赏
  • 举报
回复
如果我确实想修改table的team_name,那么建立关联约束后,怎么办?

34,590

社区成员

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

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