说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

父子表的更新怎么办?

编辑:说三道四文库 发布时间:2017-10-20 04:55
HTML文档下载 WORD文档下载 PDF文档下载
我现在有两张父子关系的表,
A,B,B 是A 的子表,B 的 id 与 A 的 id 为外健关联关系,且都为主健。现在,A、B 表里面都有数据,如果修改任意一个主键都会出错,怎么办?对父子表关系难道就不能修改相关联的键值了吗?请高手赐教
alter table a drop cascade constraint
我感觉这样不行!删掉级联关系之后,那如果主表中的ID 改变,而子表中没有改变,那子表不就找不着父表了?如果有级联关系,就改不了了,怎么办呢?做一个触发器,我对sql 语法不是很熟,麻烦帮忙写一段代码参考参考!谢谢!
用新的主键值拷贝一份,并且删除原来的父子记录
可以多步完成,先在主表A中插入一笔新记录,其ID为新的ID,其他字段值与要修改的ID对应的记录相同,然后UPDATE表B,将其ID更改为新的ID,然后删除表A中要修改ID的那条记录。
但是在触发器里面没法实现 。在触发器里面不允许操作本表,怎么办?
我的意思是你不能直接update已经被子表使用的ID,必须经过多步完成,所以是不能指望触发器来完成这项工作的。
我的程序不用触发器很不好办。在网页中自动生成的sql,很不好改,所以只有在数据库上打主意。那用别的,存储过程,能行吗?
那你在before update 触发器中判断若:new.id与:old.id不同(或者你的触发器就是update of id),此时通过动态SQL,'alter table temp disable constraint temp_fk'将这个外键约束先disable,然后更新子表,在after update 触发器中再通过'alter table temp enable constraint temp_fk' 使这个外键约束enable.
关键是 'alter table temp disable constraint temp_fk' 这个动态sql能不能执行?因为在trigger里面,这个表示被锁定的。我对这个不熟,见笑!
我用 select * from user_constraints where TABLE_NAME='ARCHFLIST' 
--'ARCHFLIST'  就是我的子表,得出来的  FK_ARCHFLIS_REF_11545_ARCHF 就是这个外键约束,对吧!'alter table temp disable constraint FK_ARCHFLIS_REF_11545_ARCHF',是这样吗?多谢空杯大哥关照!
是这样的,你的触发器是建立在主表上的,而disable和enable的操作是针对子表的,不过我也不知这样的动态SQL语句是否能在trigger里执行?
若还是不行,你就在程序里,在update主表的ID前后直接执行这两句SQL语句吧!
不要用自然主键作为数据表的主键,最好建立一个代理键作为数据表的主键,并使用此代理键
进行关联,这样就不会出现修改主键的问题
我在主标上建了了一个trigger如下:

CREATE OR REPLACE TRIGGER ARCHF_TRIGGER1 
BEFORE  UPDATE  
ON XBDKMIS.ARCHF 
FOR EACH ROW  
  
DECLARE  
oldID  archf.docid%type;  
newID  archf.docid%type; 
BEGIN 
newID:=:new.docid; 
oldID:=:old.docid; 
if newID!=oldID then 
execute immediate 'alter table archflist disable constraint FK_ARCHFLIS_REF_11545_ARCHF'; 
execute immediate 'update table archflist set docid=newID where docid=odlID'; 
execute immediate 'alter table archflist enable constraint FK_ARCHFLIS_REF_11545_ARCHF'; 

end if; 
END; 


执行修改操作的时候,出现如下错误:

can't commit in trigger;
error during excute trigger;
...
好像没有什么好的解决办法。上面的办法也不行。可是这个表已经建立好了,这种效果看来在触发其中是不能达到的了。不止各位还有何高见?
我去年回答过一模一样的问题,解决方案如下:

-- 建父表
SQL> create table a(id integer primary key);
Table created.

-- 建子表
SQL> create table b(id integer);
Table created.

--建立一个deferrable(可延时检验的外键,并设置初始校验方式为延时)
--这一部大概是最关键的,所谓延时校验就是在commit的时候才对约束进行合法性检查
--而建立约束的时候如果不指定延时校验那就是及时校验,dml完成以后立即进行合法性检查
SQL> alter table b add constraint fk_b_a foreign key (id) references a(id) deferrable initially deferred;
Table altered.

--插入测试数据
SQL> insert into a values (1);
1 row created.
SQL> insert into a values (2);
1 row created.
SQL> insert into b values (1);
1 row created.
SQL> insert into b values (2);
1 row created.

--建立一个触发器保证父子表中的纪录同步
SQL> create or replace trigger tri_a_1 before update on a for each row
  2  begin
  3    update b set id=:new.id
  4     where b.id=:old.id;
  5  end;
  6  /

Trigger created.

--更新父表数据
SQL> update a set id=3 where id=1;
1 row updated.

--检查结果
SQL> select * from a;
        ID
----------
         3
         2

--结果是看到子表中的纪录自动被更新了
SQL> select * from b;
        ID
----------
         3
         2

不知道我有没有误解你的意思,下面是实验
CREATE OR REPLACE TRIGGER trg_update_father
AFTER UPDATE ON father FOR EACH ROW
BEGIN
     UPDATE child SET id=:new.id WHERE
     id=:old.id;
END trg_update_father;

^_^>select * from father
  2  ;

        ID
----------
         1
         2
         3

^_^>select * from child;

        ID
----------
SERIAL
----------------------------------------------------------------------------------------------------
         1
hello

         2
world

         3
goodbye


^_^>update father set id=4 where id=1;

已更新 1 行。

^_^>select * from father;

        ID
----------
         4
         2
         3

^_^>select * from child;

        ID
----------
SERIAL
----------------------------------------------------------------------------------------------------
         4
hello

         2
world

         3
goodbye
该问题已经解决。谢谢各位。议会揭贴!
回收不活跃邮箱续:雅虎高管称能保证前用户信息和数据安全 移动周报:IT民工携娇妻转战传统行业,黄太吉的移动互联网营销 独立游戏开发的传奇!LIMBO开发商Playdead公司CEO专访 Firefox OS模拟器4.0正式发布 支持模拟触摸事件 莫轻言已成功部署大数据,也许你离达标还相去甚远! 基于Java的四大开源测试工具 Firefox OS:称霸移动市场?我们的计划更长远! 支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现 传苹果为iWatch招兵买马 以确保明年发布新产品 降价高达1200元的Surface RT,并不值得你购买 Daux.io:开源的项目文档生成器 避免代码注释的五大理由 安徽农信:30人,13轮测试,完成日均270万笔交易的综合业务系统架构调整 研究员带来5D光存储技术:容量达360TB,寿命高于百万年 LSI闪存加速或助力互联网IDC自我设计与建设 怎样让用户从100涨到200万?硅谷创业教父如是说 大作修炼之道:就算是手游,也要搞点剧情吧! Java EE 8愿望清单:缺少这些,Java EE将不会完美 Surface Watch?传微软正测试搭载Win 8的智能手表 又一美国造?联想在美设厂制造产品 软件定义未来 2013 SDCC中国软件开发者大会全面开启 可以直接拿来用的15个jQuery代码片段 程序员最害怕的5件事 你中招了吗? 机器智商已达四岁:亲,是时候考虑你的饭碗了 读60行代码完成的NoSQL数据库,看数据库打造面临的挑战 聚焦全球移动市场:韩国,开放之后是春天? Github 终于开始认真考虑开源项目许可证了 雅虎发布今年第二季度财报 总营收为11.35亿美元 既然无法避免被GAE锁定,何不考虑其中的机遇并自力更生 19亿美金背后的分析:91为什么要卖?百度为什么要买? 直接拿来用!最火的iOS开源项目(三) 请教: 在Excel中如何查找数据? 女生向IT领域发展应往哪方面发展好? 各位老大过来看看,水晶报表问题 iframe 问题 有哈尔滨的程序员朋友吗?近来报个名就行 VS.NET 2003 正式简体中文版问题? PHP中有没有可以跨页面、跨session的变量? varbinary类型如何在datagrid中显示 几个简单的问题,在线等 配置SQL分布服务器时出错?急!在线等待! 有关CIH病毒 请教:如何使jpg图片放大后仍保持图像的清晰? 为我女友找工作, 地点:长沙。请大家帮忙,散尽所有分皆可:4860分。 谁知道installAnywhere的注册码?50分!!! [在线求助]:登陆的时候是用cookies来保存用户名和密码的,当用户没有正常退出,(比如说电脑断电了,直接关闭了ie等等)那应该怎么样清 关于按钮触发数据库操作 软件报价,用sql且windows界面的软件,大虾们估计多少money? 请问怎样在C#中调用VB.NET的类库? 在servlet里大量使用静态方法会不会有并发访问的问题 谁知道installAnywhere的注册码?100分!!! 谁有《visual C++网络高级编程》一书的配套光盘?邮电出版 开机时显示 NTLDR IS MISSING, 谁知道这是怎么回事? 急!应该用什么实现? CListCtrl如何让动态改变图标!GetItem()如何使用??,解决加分 怎样设置oracle的maximum number of processes 那个知道那里有DELPHI 7.0下啊,给分 delphi&spl GGJJ们谁有电子版《windows核心编程》的完整的第27章啊?偶的那一版这章只有半截 请教一个写入文本的问题,解决200分相送,在线等 如何做到高人一筹 有没有人能具体讲一讲关于大文本处理的过程! 函数返回值问题,给高分 DX抓图,如何保存为Bmp文件? 3个NF 嵌入文件夹窗格怎么使用 创业中的软件公司招人(有兴趣的弟兄进来看看) 数据库中事务的特点及其应用,急,不够再给分500,在线,急。 关于对话框.高分请教 创业中的软件公司招人(有兴趣的弟兄进来看看) 做的网站在IE5.0和IE6.0显示的问题 寻找采用WebSnap 技术的例子? matrxII观后感 关于JSP文件和BEAN的存放 创业中的软件公司招人(有兴趣的弟兄进来看看) c#做的程序可以直接在新安装的win98下(没有.net环境)跑吗?有经验的请留步 c#做的程序可以直接在新安装的win98下(没有.net环境)跑吗?有经验的请留步 存储过程分页有点问题,谁帮我看一下 基础问题!困扰我! 请哥哥姐姐帮忙,把下面的代码转换成VC代码 大家case工具都用到什么程度? 为什么编译的可执行文件在其他计算机无法运行? 若f(a+x)=-f(b-x),求函数关于哪点中心对称 有的婉转低回 下句 please watch carefully.翻译为中文 丨OA丨=2,丨OB丨=2,向量OC=xOA+yOB且x+y=1,∠AOB是钝角,f(t)=丨OA-tOB丨的最小值为根号3,则丨OC丨的 低回婉转什么意思 秦叔叔买了一套总价为68万的住房,要纳税百分之2的房屋契税,秦叔叔要缴纳多少元契税 已知以原点为圆心,1为半径的园上有两个动点AB满足│OA+OB│=│OA-OB│,向量a=(1-根号3)OA+OB.已知以原点为圆心,1为半径的园上有两个动点AB满足│OA+OB│=│OA-OB│,向量a=(1-根号3sinα)OA+OB,b=OA+ 求英语大神帮帮看 我感觉present 和 show都可以啊 more much few less 哪些后面加可数名词 哪些后面加不可数名词 matlab编程中出现问题,说是矩阵维度不一致 ,M文件主函数如下:function f=myobj(x)arf=linspace(0.0001,0.5233,100);K=1162;M=600;L=1650;t=281-x(1).*cos(arf+1.134);h=sqrt(x(2).^2-(x(1).*sin(1.134+arf)-x(3)).^2);s=t-h;f=abs(acot(cot(ar 李老师出示了如下题目:在等边三角形ABC(如图)中,点E在AB上,点D在CB的延长线上,且ED=EC,试确定线段AE与DB的大小关系,并说明理由.小敏与同桌小聪讨论后,进行了如下解答:1)特殊情况,探 I-love-gou-loving-gou-as-the-mouse-love-the-rice!这句英语怎么翻译 英语翻译:有什么不同,have what different对吗 数学中考倒数第二题.李老师出示了如下框中的题目.在等边三角形ABC中,点E在AB上,点D题目在空间里 下面是链接 只要第三小题 http://hi.baidu.com/%CA%C9%B4%C1/blog/item/379700150db4b00eb9127bfd.html 几句英译中.the girls are excied to see Jay zhou.show me how to operate the machineI'll have someone shorten my dress by two inches.It enables people to live an enjyyable life.they oughtn't to be late for schoolpeople used to clean their rooms by 求一篇英语作文题目l have changed 帮着起个关于珍惜时间的名字比较颓废一点的比如 年华已淡之类的4 楼 解释下 什么意思 英译中 就几句I can see that you can make s a good sentence.thats so great i realy appreciate you.but you have to learn how to make a pharagraph it is a group of sentence which have the same idea.great work这是我在学习英语时,英语母 错误使用 * 内部矩阵维度必须一致.t=0:0.001:2*pi;w=1;N=[1 3 5 7 9 11];k=1;while k 关于珍惜时间的文章名字不要《匆匆》~ 泵打1成语 已知一次函数y=2(3)x/3 +2的图象与x轴‘y轴分别交于点a`b,求原点ab到直线的距离 史记的全部文章 请教几句#英译中Americans like talking to people who are walking a dog.Which of the following is not TRUE?Americans never share tables with strangers.The word "heavy"in this passage means fat.The only answer to "How are you?"is"I'm fine."When y [求助]错误使用 * 内部矩阵维度必须一致.[x,y]=meshgrid(-3000:20:3000,0:20:5000); Q=14831;sigy=0.314278*x.^0.876088;sigz=0.057025*x.^1.0935;H=80;u=1.72;c=Q./(pi*sigy*sigz*u+eps).*exp(-0.5*(y./(sigy+eps)).^2).*exp(-0.5*(H./(sigz+eps)).^2) 2006年世界杯足球赛在那个国家举行 已知向量p=(向量a)/|(向量a)|+(向量b)/|(向量b)|其中(向量a)、(向量b)均为非零向量,则|(向量p)|的取值范围是多少? I bought a pen for you中for you做什么成分 求点到面的距离.用向量法怎么证 史记写作背景说什么? I’ll be there ”怎么翻译 请问英文信件开头这个present是什么意思?格式是:December 10,2014Ran XuPresentDear Ran,然后就是正文了这里面的present是什么意思? 已知非零向量a,b的夹角为pi/3,若向量p=a/|a|+b/|b|,则|p|= 为什么今年是“双闰年”? 草原 练习那些小丘的线条是那么柔美,就像只用绿色渲染,不用墨线勾勒的中国画那样,到处翠色欲流,轻轻流入云际.”这里的“渲染”是指:;勾勒的是:;这句话说明了: byte[] bytesSend = System.Text.Encoding.Default.GetBytes("23f"); byte[0]=50;byte=51;byte[2]=102?我的问题是byte[0]=50怎么得到的,代表什么意义? matlab 提示说内矩阵维度不一致.方程:function y=f(m1,m2,j)g=9.8;y=[0,m1*g,0,m2*g]'*inv([m1*cos(j),-m1,-sin(j),0;m1*sin(j),0,cos(j),0;0,m2,-sin(j),0;0,0,-cos(j),1])y结果:>> hanshu(12,12,8)? Error using ==> mtimesInner matrix dimension 《草原》的练习在天底下,一碧千里,而并不茫茫.四面都有小丘,平地是绿的,小丘也是绿的.羊群一会儿上了小丘,一会儿又下来,走在哪里都象给无边的绿毯绣上了白色的大花.那些小丘的线条是 content -type:text/plain conten - transfer -encoding:7 bit这是收到一封电子邮件的全文,有劳了 风吹墙头草后面的一句风吹墙头草—()? 求关于史记论文一篇!一、基本要求:第一,通读《中国古代名著导读》中的“史家之绝唱,无韵之《离骚》”一章.第二,选择一部《史记》阅读,确定自己的研究方向.第三,论文按格式撰写,字数2 sublime text 2 已经安装了“ConvertToUTF8”和“GBK Encoding Support”中文仍然乱马我在别的电脑上按照同样方法安装,可以正常支持中文.那是不是我电脑的系统问题导致图片上的中文乱码?是否可以在 风吹墙头草 哪边硬往哪边倒怎么解释 英语翻译 当孩子们向他献花时,他激动得热泪盈眶.present 若向量组a1,a2,a3线性无关,判断下列向量组的线性相关性1.a1:a1+a2;a1+a2+a32.a1-2a3;3a1+2a2;-2a1-a2+a3 已知,如图:直线AB:y=x+8与x轴、y轴分别相交于点B、A,过点A作直线AB的垂线交x轴于点D. 1.求证:三角形AOB全等于三角形AOD 2.求A,D两点确定的直线的函数关系式 3.若点C是y轴负半轴上的任意一 would you please _____ yourself from smoking while the lecture is in progress?A、avoid B、Prevent C、cease D、keep 选什么为什么?翻译下. <史记>是谁的著作 A,B是两个定点,且|AB|=8,动点M到A的距离为10,线段MB垂直平分线L交MA于点P,若以AB所在直线为X轴AB中垂线为Y轴建立直角坐标系1.试求P点轨迹C的方程2.是否存在实数m使mx-y-4m=0与曲线C交点关于y=-1/2x 李阿姨家买了一套总价为30万的住房,要缴纳1.5%的房屋契税,王阿姨买这套住房一共花了多少元 用><填空 若a分之B 已知如图,直线AB:y=-x+8与x轴,y轴分别交与点B,A,过点B作直线AB的垂线交y轴与点D .若点C是x轴负半轴上一点,过C作AC的垂线 李丽家买了一套普通住房,房子的总价为20万元要缴纳1.5%的契税,缴纳契税多少元 求诗经里夸美人漂亮的句子除了蒹葭和关雎.要注明出处和大意 关于珍惜时间的偐语 邻居张阿姨的儿子购买了一套婚房,总价48万元.按规定,他要购房总价的百分之一点五缴纳契税,按购房总价的百分之零点零三缴纳印花税.他一共要缴纳多少元税费? “梦想的墓志铭:我败给了人心和欲望 ” 观舞记一文中的低回婉转是什么意思 The theatre,please. 已知向量p=向量a/向量a的模+向量b/向量b的模,其中向量a,b为非零向量,则向量p的模取值范围是 苏富比将在墨尔本拍卖一件清朝蓝色丝绸澳媒称澳政府拟摒弃前任政府对亚洲战略法国总理将赴俄罗斯会见俄总理 讨论核阿根廷执政党保住国会最大党地位 但选美政府承诺不会将公民医保个人信息用于智能手机横行 日本偷拍案件五年翻一番英国一女士患巨结肠病 腹部肿大好似怀格鲁吉亚总统大选结束 俄格关系或“有法国总理将赴俄罗斯会见俄总理 讨论核阿根廷执政党保住国会最大党地位 但选外媒:以色列空袭加沙地带 未造成人员智能手机横行 日本偷拍案件五年翻一番未来两年国际天然气市场仍供应紧俏印度急着发射火星探测器纽约曝华裔灭门血案 5人士丧生中国赴美名校留学生 每4人就有1人退“创新之国”芬兰经验启迪中国企业加大加拿大北极地区气温或创4.4万年新高日本首相出访土耳其 欲游说其勿购中国美监管机构调查房地产信托投资基金澳媒称中国买家推动悉尼当地房价升高2全国政协召开双周协商座谈会民用无人机市场扫描(记者观察)中国经济稳中有进(图说2015)江西启动柘林湖环保PPP项目民建十届四中全会开幕以奖代补支持政府和社会资本合作项目王家瑞会见出席第三届中国 中东欧国家河池产业扶贫覆盖95%贫困户饮马长江 走向世界天津至保定从3小时缩到40分广州恒大负于巴塞罗那“烫手的山芋”怎么拿下(人民眼·本期阿尔山有条不冻河(美丽中国·冬日有约国防部新闻发言人就美售台武器发表谈话京杭运河航运防污有新规唯物史观是理论创新的基础(大家手笔)无权处理的问题应报送监察机关宝汗大叔:跨马巡边三十年(发现身边·“汇总征税”为企业节支增效广西玉林基本建成四级公共文化服务网络图片报道
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘