【发布时间】:2017-05-14 10:14:39
【问题描述】:
我在 Oracle 中有一个这样的数据库
stu_choose_lesson ----> student <-----leave_apply
/|\
|
|
|-------message
然后,我有一个作业可以让我更新学生中的记录,并且根据要求我不能使用“更新时”。
我在 sqlplus 中运行这些命令。
BEGIN
UPDATE student SET studentNum=200204 WHERE studentNum=200202;
UPDATE stu_choose_lesson SET studentNum=200204 WHERE studentNum=200202;
UPDATE leave_apply SET studentNum=200204 WHERE studentNum=200202;
UPDATE message SET studentNum=200204 WHERE studentNum=200202;
END;
/
然后我得到这个错误。
ORA-02292: integrity constraint (SYSTEM.SYS_C007646) violated - child record found
ORA-06512: at line 1
我在谷歌上搜索并执行此操作。
SET CONSTRAINTS SYS_C007647 DEFERRED;
但我收到此错误。
ORA-02447: cannot defer a constraint that is not deferrable
我知道我做错了一些事情,但我不知道该怎么做,也不知道怎么用谷歌搜索。
谢谢。
【问题讨论】:
-
您可以使用 CTE 并在单个语句中更新它
-
@AluanHaddad 作业要求是“使用事务进行后续更新:将studentNum从'200202'更新为'200204',同时更新所有FK(不要在更新时使用)。 "所以,我不知道CTE是否达到要求。
标签: oracle transactions