sql根据主表id更新另一表ID,请问大家sql语句该怎么写呀? 10

表:company(主表)字段:companyIdcompanyNamecontacts表:users(子表)字段:userIdcompanyIduserNameprov... 表:company(主表)
字段:
companyId companyName contacts

表:users(子表)
字段:
userId companyId userName province
两表已经建立了关系
现在需要 根据 company表的companyId 更新users表的companyId ,我现在做的是已经在下拉框下显示了company表的companyName字段
当我选择那个companyName时就会在servlet里更新那个users表的companyId
展开
 我来答
v6da
2011-11-01 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:89万
展开全部
一般情况做关联后是不能更新外键的,因为有约束。所以一般操作是不可以。
但是有两个简单的办法
1.是你更新前设外键关联无效,更新后恢复外键有效
2.设置外键的时候在外键上加 ON UPDATE CASCADE ON DELETE CASCADE
这样在父表更新或删除的时候,字表就会跟着更新和删除。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
handangaoyang
2011-11-01 · TA获得超过2242个赞
知道大有可为答主
回答量:2633
采纳率:88%
帮助的人:884万
展开全部
1.你下拉框显示的companyName,但是你必须为这个下拉框绑定companyId作为它的选中值。
2.你想更新users表companyId?这两个表就靠这个字段关联,你怎么要修改这个字段?
追问
是关联的呀,我想根据company表里companyId更新users表里的companyId,我已经下拉框显示了companyName,我准备通过选择companName时顺便将它的companyId传到servlet去更新users表的companyId,这是我的想法。至于为什么要这么做是因为工作需要。项目需求需要这样做
追答
你既然想改,当然可以改。
两种方法。
1.直接在数据库(sqlserver)里面创建一个触发器。当company表的companyId发生修改时,users表的companyid跟着修改。
语句:
create trigger tig_update
on company for update
as
begin
if update(companyId)
begin
update users set companyid=i.companyid from Inserted as i,Deleted as d,users as u
where u.companyid=d.companyid
end
end
--这样,你只要修改company表的companyid,users表的companyid会自动更改。

2.在程序中编写sql语句,前提:你要得到你选择的companyId,在此定义为a;和就的companyid 定义为b
sql:update users set companyid=a where companyid=b
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zug212
2011-11-01 · TA获得超过892个赞
知道小有建树答主
回答量:719
采纳率:50%
帮助的人:162万
展开全部
没明白你的意思,在servlet更新是什么意思?
最主要的一点,你要怎么关联到users表?我的意思是,用户可能在页面选择了公司AAA,但你要更新到users的那一条记录去?你要说清楚users表是怎么跟company关联的
追问
user表里的companyId与company表里的companyId相关联
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Daniel_bad
2011-11-01 · TA获得超过635个赞
知道小有建树答主
回答量:382
采纳率:100%
帮助的人:213万
展开全部
update u set u.companyid=com.companyid
from users u
inner join company com
on u.companyid=com.companyid
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尉迟南蝶
2011-11-02 · 超过15用户采纳过TA的回答
知道答主
回答量:215
采纳率:0%
帮助的人:56.7万
展开全部
子查询即可
SELECT (SELECT name FROM TA WHERE id = TB.id1) AS id1,
(SELECT name FROM TA WHERE id = TB.id2) AS id2
FROM TB
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式