在SQL Server中的数据update()

nthb2001 2001-10-30 09:13:28
在SQL Server中有
一个基本表 c_base
c_base中有客户编码、客户名称、客户地址、客户电话、客户新编码
一个订单表 d_exporder
d_exporder中有订单编号、订购客户编码、订购客户名称、订单状态等
一个发货表 d_issue
d_issue中有发货单编号、订单编号、客户编码、客户名称等

d_exporder和d_issue表中客户编码与c_base中的客户编码相关联

想实现如下功能:
把d_exporder中的客户编号和d_issue中的客户编号换成c_base表中客户新编码
并把c_base中的客户编码停用,并把客户新编码变为客户编码使用。

不知如何实现,请名位帮个忙,在下只有300分,略表心意~~~~~~

呵呵~~~~~~~~

谢谢~~~~~~~


...全文
171 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
nthb2001 2001-11-30
  • 打赏
  • 举报
回复
呵呵
我已经解决
nthb2001 2001-11-01
  • 打赏
  • 举报
回复
有没有人啊~~~~~~~~~~~
不会的帮我up一下啊~~
zfsusu 2001-11-01
  • 打赏
  • 举报
回复
把d_exporder中的客户编号和d_issue中的客户编号换成c_base表中客户新编码,可能有点麻烦,因为要一个一个找出来再替换,还是等高手帮你吧,应该能解决的。
把c_base中的客户编码停用,并把客户新编码变为客户编码使用,这个倒不难,把 前者的值覆盖后者就行了。

BlackBone 2001-11-01
  • 打赏
  • 举报
回复
还没解决吗?
nthb2001 2001-10-31
  • 打赏
  • 举报
回复
不会经常做的~~~~~~~~

只做这一次啊~~

你的方法是不错啊

我试试~~~~~~~
BlackBone 2001-10-31
  • 打赏
  • 举报
回复
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
]
这是SQL Server 2000中CREATE TABLE语法中关于FORGEIGN KEY的一段,只要加上ON UPDATE CASCADE参数就能实现你的要求。
BlackBone 2001-10-31
  • 打赏
  • 举报
回复
那么,先插入一批记录如何?
新插入记录的“客户编码”等于已有记录的“客户新编码”,“客户新编码”为特殊字符串(便于事后删除)
我想,你不会经常要干这个吧。

nthb2001 2001-10-31
  • 打赏
  • 举报
回复
up!!!!
nthb2001 2001-10-30
  • 打赏
  • 举报
回复
?
nthb2001 2001-10-30
  • 打赏
  • 举报
回复
blackbone兄~~~~~

我是用的sqlserver7~~~~~
我就是想要找一个不取消外键的前提下,找到一个解决的方法~~~~~

如果在sql server2000中用update c_base set 客户编码 = 客户新编码
还是不能达到我要的效果啊
要把d_exporder和d_issue表中客户编码也要更新~~~~~
nthb2001 2001-10-30
  • 打赏
  • 举报
回复
风兄弟~~
谢谢你的回答~~~~~

不过,d_exporder和d_issue表中的客户编码与c_base中的客户编码是相关联的,是指如果在c_base中没有这个编码那么d_exporder和d_issue表就不可以update()

你没有考虑这一点~~~~~

不过还是要谢谢你的回答~~~~~~
BlackBone 2001-10-30
  • 打赏
  • 举报
回复
在SQL Server7中,如果有外键,则需先取消外键约束再进行如上操作;如果是SQL Server 2000,由于外键支持级联操作,直接“update c_base set 客户编码 = 客户新编码 ”即可。
iamxia 2001-10-30
  • 打赏
  • 举报
回复
update d_issue
set d_issue.客户编号 = c_base.客户新编码
from d_issue,c_base
where d_issue.客户编号 = c_base.客户编码

update d_exporder
set d_exporder.客户编号 = c_base.客户新编码
from d_exporder,c_base
where d_exporder.客户编号 = c_base.客户编码

update c_base
set c_base.客户编码 = c_base.客户新编码

iamxia 2001-10-30
  • 打赏
  • 举报
回复
update d_exporder
set d_exporder.客户编号 = c_base.客户新编码
from d_exporder,c_base
where d_exporder.客户编号 = c_base.客户编码

update c_base
set c_base.客户编码 = c_base.客户新编码

34,590

社区成员

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

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