MS SQL SERVER 主副关键字(90分)

  • 主题发起人 主题发起人 question
  • 开始时间 开始时间
Q

question

Unregistered / Unconfirmed
GUEST, unregistred user!
最近使用 MS SQL SERVER 6.5 发现一个问题。
如有两个表:ABC01表中有 A01 B01 C01 ...等字段其中 A01 是关键字
ABC02 表中有 B01 A01 B02 B03 .. 等字段,其中 B01 是主关键字,A01
是对应 ABC01 表中 A01 的外部关键字。
现在发现如果在 ABC01 中输入的数据,同时在 ABC02 中也输入了对应的数据
后,发现一旦更改 ABC01 中的 A01 的数据,如果在 ABC02 中存在对应的记录就会出现错误,有办法解决这个问题吗?我想只要更改ABC01表中的主关键
字A01后,在ABC02中对应的A01的信息也会改动。
PS:请不要建议我使用触发程序来做!:)
Thank you!
 
方法如下:
自己写对应的Update语句进行修改.
步骤如下:
Database1.starttransaction
try
update ABC02 set A01=NULL(or other special value that in ABC01) where A01=newvalue
table1.applyupdates;
update ABC02 set A01=newvalue where A01 is NULL (or other special value that in ABC01)
Database1.commit;
except
Database1.rollback
raise
end
table1.commitupdates;

 
补充一下,NULL 不行,只能是"特殊值",
如无法设"特殊值",只能是动态删增引用关系.
实在没办法,只好去掉引用关系
 
昏倒!
我想得到类似触发器的效果,不用在应用程序中做。
PARADOX 就可以达到这种效果。
我知道有个函数可以返回!可那是只读的,我想知道如何改?(6.5 新加的功能)
 
必须用支持级联操作的数据库!(v foxpro就可以!)
 
这个问题就没人知道回答吗?
 
同意delphi fan2
-- 要么系统提供级联修改;
-- 要么自己写在触发器中;
-- 要么自己写在程序代码中;
都不想用.那只有天上掉馅饼了??
 
荷荷,question,你这问题不叫问题, 纯属是你偷懒想出来的事情,嘿嘿

不过世间技术的进步大抵都是由于懒人的要求才会有新技术出现

但愿 M¥的SQL SERVER 1x 版里可以满足你的要求

同意delphi fan2 和陈地球的意见,嘻嘻

顺便说一句,MS的触发器不好用,
还是用自己写在应用程序里或是存储过程里的方法好些
 
但我记得好象SQL Server支持当Primary Key的
键值改变时,与其相同的Foreign Key会自动改变。
 
但我记得好象SQL Server支持当Primary Key的
键值改变时,与其相同的Foreign Key会自动改变。
 
kane说得对!
 
我实验了, 7 都没解决,我只有结束问题了,还是使用触发搞定的。Sigh
 
没有人知道答案的了吗,我可是在书上明明看到说改变PK,FK会变的
<<SQL Server 6.5开发使用手册>>
不过好像老是报错
 
多人接受答案了。
 

Similar threads

回复
0
查看
988
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部